Iteration Layer

Chain your document and image APIs into one workflow

Extract documents, generate images, transform files, and produce PDFs. One credit pool, one API style, and they chain together without glue code. EU-hosted, GDPR-compliant.

No credit card required — start with free trial credits

Zero data retention · GDPR Made & hosted in the EU 350 free test requests No credit card required 14-day money-back guarantee

One output feeds the next

Five APIs that cover every step of your content pipeline — ingestion, transformation, and generation. One key, one credit pool, and structured JSON responses designed to chain together.

Fits into your existing stack

Native SDKs for Node, Python, and Go. OpenAPI spec for everything else. MCP server for AI agents and Claude Code skills. n8n community node for visual workflows. Zapier coming soon.

Mix and match freely

Extract data from a document, generate visuals from the results, then compile everything into a finished report. Mix, match, and build your own pipeline.

Real-world pipelines, ready to ship

Each recipe chains multiple APIs into a complete workflow. Pick one, tweak it, and deploy — or use it as a starting point for your own pipeline.

Extract Invoice Data

Extract vendor name, line items, totals, and dates from invoice documents.

Generate Social Card

Generate an Open Graph social sharing card with dynamic title, description, and branding.

Remove Product Background

Remove the background from a product photo using AI-powered segmentation.

Extract Resume Data

Extract candidate name, contact details, work history, and skills from resumes.

Generate Certificate Image

Generate a professional certificate image with recipient name, course title, and completion date for digital sharing, social media, or email delivery.

Smart Crop Group Photo

Use AI detection to smart-crop individual portraits from a group photo.

Compress Image for Email

Resize, sharpen, and compress an image to fit email platform size limits in a single pipeline.

Compress Image to Target File Size

Compress an image to fit within a specific file size in bytes using quality-first compression.

Convert Contract to Markdown

Convert a contract PDF to clean markdown for clause extraction or LLM analysis.

Convert Document for Knowledge Base

Convert external documents — specs, contracts, reports — to markdown for knowledge base ingestion.

Convert Document for RAG Ingestion

Convert a document to clean markdown suitable for chunking and embedding in a RAG pipeline.

Convert Image Format

Convert an image between PNG, JPEG, and WebP formats with quality control for web optimization.

Convert Invoice to Markdown

Convert a PDF invoice to clean markdown for LLM processing or document pipelines.

Convert Resume to Markdown

Convert a resume PDF to clean markdown for LLM parsing or candidate pipelines.

Convert Document to Markdown

Convert PDF, DOCX, HTML, or image documents to clean, structured Markdown.

Extract Academic Paper Metadata

Extract title, authors, abstract, and citation info from academic papers.

Extract Article Text

Extract clean article content — title, author, date, and body text — from PDFs, Word docs, and web pages.

Extract Carrier Invoices to Spreadsheet

Extract line-level charges from multiple carrier invoices, then generate an XLSX freight cost tracker in a single pipeline.

Extract Contract Clause Data

Extract parties, dates, and clauses from a contract into structured JSON for legal review workflows.

Extract Contracts to a Register

Extract key terms from multiple signed contracts and build a structured XLSX contract register tracking parties, dates, value, and renewal terms.

Extract Customs Declaration

Merge a commercial invoice, packing list, and bill of lading into a unified customs declaration.

Extract Customs Declarations to Spreadsheet

Extract HS codes, declared values, and duty amounts from customs declaration documents, then generate an XLSX import duty log.

Extract Invoices and Build Accounts Payable Spreadsheet

Extract structured data from multiple invoice PDFs in one call, then pipe the results directly into an XLSX accounts payable tracker.

Extract Medical Record

Extract patient details, diagnoses, and medications from a medical record into structured JSON for healthcare workflows.

Extract Multi-Invoice Data

Extract structured data from multiple invoice files in a single API call using an array schema.

Extract Product Catalog Entry

Extract product name, SKU, price, and specifications from a catalog document into structured JSON for e-commerce workflows.

Extract Property Appraisal

Extract appraised value, property details, and comparable sales from a property appraisal report into structured JSON.

Extract a Purchase Order and Generate a Confirmation

Extract line items and delivery details from a customer purchase order PDF, then generate a formatted order confirmation PDF ready to send back to the buyer.

Extract Real Estate Listing

Extract property address, price, room count, and features from a listing document into structured JSON for MLS and property platforms.

Extract Receipt Data

Extract merchant, date, line items, tax, and total from receipts.

Extract Receipts and Generate Expense Report

Extract merchant, date, amount, and category from receipt photos and PDFs in one call, then generate an XLSX expense report with a totals row.

Extract Rental Application

Extract applicant details, employment history, income, and references from a rental application form into structured JSON for tenant screening.

Extract Rental Applications to Spreadsheet

Extract applicant details from rental application PDFs and generate a side-by-side XLSX for comparing income, employment, and move-in dates.

Extract Supplier Catalog to Spreadsheet

Extract every product from a supplier catalog PDF — SKUs, names, prices, MOQs — and generate a ready-to-import XLSX in two API calls.

Generate A+ Content Banner

Generate an Amazon A+ Content banner image for book marketing with cover art, title, and branding.

Generate Billing Statement

Generate an XLSX billing statement with a merged company header, subscription line items, overages, credits, and subtotal/tax/total formulas.

Generate Book Cover Spreads

Generate print-ready book cover spreads with back cover, spine, and front cover in a single image.

Generate DOCX Contract

Generate an editable DOCX service agreement with parties, terms, and payment schedule.

Generate Email Banner

Generate a personalized email banner image with text, logo, and brand colors.

Generate Employee Offer Letter

Generate a professional offer letter PDF with role, compensation, start date, and company details.

Generate Employee Report

Generate an XLSX employee report with departments, salaries, hire dates, and currency formatting.

Generate EPUB Book

Generate a complete EPUB e-book with chapters, table of contents, and rich text formatting.

Generate Event Ticket

Generate an event ticket image with QR code, event name, date, venue, and seat information.

Generate Front Book Cover

Generate a front cover image with custom artwork, title text, and author attribution.

Generate Inventory Report

Generate an XLSX inventory report with stock levels, reorder points, unit costs, and total value formulas for purchasing teams.

Generate Invoice Spreadsheet

Generate an XLSX invoice with company info, line items, subtotal/tax/total formulas, and currency formatting.

Generate NDA

Generate a non-disclosure agreement PDF with party names, effective date, and standard confidentiality terms.

Generate OG Image

Generate a branded Open Graph image with a generative wave background, logo, and tagline.

Generate Order Export

Export e-commerce order data to CSV with order numbers, customer details, amounts, and fulfillment status.

Generate Packing Slip and Shipping Label

Generate a PDF packing slip and a PNG shipping label from the same order data in a single fulfillment workflow.

Generate Packing Slip

Generate a packing slip PDF with order details, item list, and shipping address.

Generate PDF Certificate

Generate a professional achievement certificate with recipient name, course details, date, and a QR code for formal download or print.

Generate PDF Invoice

Generate a professional PDF invoice with company branding, line items, and totals.

Generate PDF Manuscript

Generate a print-ready PDF manuscript with title page, table of contents, and chapters at 6x9 inch trim size.

Generate PDF Report

Generate a professional PDF report with title, executive summary, data table, and footer.

Generate Product Datasheet

Generate a professional product specification sheet with images, feature tables, technical specs, and contact information.

Generate Product Listing Image

Generate a product listing image with photo, price badge, and promotional text overlay.

Generate Product Promo Banner

Optimize a product photo and compose it into a promotional banner with sale text and pricing.

Generate Product Promo Card

Generate a product promotional card with a product photo, sale badge, and pricing text.

Generate Product Slide

Generate a branded product slide image with headline, feature pills, and a call-to-action — all arranged with layout layers.

Generate Quarterly Report

Create a structured quarterly business report with table of contents, data tables, and page numbers.

Generate Real Estate Listing Graphic

Generate a branded property listing graphic with a property photo, status badge, price, address, and key stats.

Generate Report Card Image

Generate a visual KPI report card with a headline metric, secondary stats, and branding — shareable as an image.

Generate Restaurant Menu

Generate a branded restaurant menu PDF with sections, items, prices, and descriptions.

Generate Sales Dashboard

Generate a multi-sheet XLSX workbook with quarterly revenue, expenses, and summary formulas.

Generate Sales Report Spreadsheet

Generate a formatted XLSX spreadsheet with sales data, currency formatting, and bold headers.

Generate Shipping Label

Generate a compact PDF shipping label with sender and recipient addresses, barcode, and tracking number.

Generate Slide Deck

Build a PowerPoint slide deck with title slide, content slides, and call-to-action page.

Generate Social Media Book Promo

Generate a vertical story image for TikTok or Instagram book promotion with cover art, hook text, and author branding.

Generate Thumbnail

Resize a source image to a thumbnail and convert to WebP.

Generate Timesheet Export

Generate an XLSX timesheet with logged hours, hourly rates, per-entry amount formulas, and totals for client billing or payroll.

Generate YouTube Thumbnail

Generate a YouTube thumbnail with bold title text, gradient background, and a static image cutout.

Resize, Watermark, and Convert Image

Resize an image, add a branded text watermark, and convert to WebP in a two-step pipeline.

Invoice to PDF Report

Extract invoice data and generate a formatted PDF summary in a single pipeline.

Convert Markdown to Styled PDF

Generate a professionally styled PDF document from Markdown content with custom fonts, headers, and page numbers.

Optimize Product Image for Amazon

Prepare a product photo to meet Amazon's main image requirements: pure white background, square format, 2000×2000px, JPEG.

Optimize Product Image for Etsy

Smart crop a product photo to Etsy's recommended 2000×2000px square format and export as JPEG.

Optimize Product Image for Shopify

Resize a product photo to Shopify's recommended 2048×2048px square format, sharpen, and convert to WebP for fast storefront load times.

Optimize Product Photo

Resize, enhance, and compress a product photo for an e-commerce listing with consistent quality.

Preprocess Document for LLM Classification

Convert a document to markdown and classify it with an LLM in a single pipeline.

Process Real Estate Photo

Enhance and standardize a property listing photo with auto-contrast, sharpening, and consistent sizing.

Remove Background and Generate Product Card

Remove the background from a raw product photo, then compose it into a branded listing card with the product name and price.

Resize Image for Print Publishing

Resize and convert manuscript images to KDP-compliant dimensions at 300 DPI for print-on-demand.

Resize Image for Social Media

Resize and crop a single image into platform-specific dimensions for social media.

Smart Crop Avatar and Remove Background

Smart crop to face, remove the background, and convert to WebP for a clean user avatar.

Smart Crop Product Image

AI-powered subject-aware crop that centers on the product regardless of its position in the frame.

Upscale Low-Resolution Image

Upscale a low-resolution image using AI super-resolution for print or high-DPI display.

Watermark an Image

Apply a text watermark to a photo using layer-based image composition for brand protection and copyright.

One n8n node for your entire pipeline

Zapier Coming Soon

Most n8n document workflows chain three or four separate services. The Iteration Layer community node covers extraction, transformation, and generation in a single install — wire up multi-step pipelines visually instead of writing glue code.

Stop wiring vendors together by hand

Every API returns structured output that feeds straight into the next. Official SDKs for TypeScript, Python, and Go. OpenAPI spec for everything else. MCP-ready for AI agents.

Request
curl -X POST \
  https://api.iterationlayer.com/document-extraction/v1/extract \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "files": [{
    "type": "url",
    "name": "invoice.pdf",
    "url": "https://example.com/invoice.pdf"
  }],
  "schema": {
    "fields": [
      {
        "name": "invoice_number",
        "type": "TEXT",
        "description": "The invoice number"
      },
      {
        "name": "total_amount",
        "type": "CURRENCY_AMOUNT",
        "description": "The total amount"
      },
      {
        "name": "line_items",
        "type": "ARRAY",
        "description": "Line items",
        "fields": [
          {
            "name": "description",
            "type": "TEXT"
          },
          {
            "name": "amount",
            "type": "CURRENCY_AMOUNT"
          }
        ]
      }
    ]
  }
}'
Response
{
  "success": true,
  "data": {
    "invoice_number": {
      "type": "TEXT",
      "value": "INV-2024-0042",
      "confidence": 0.97,
      "citations": ["Invoice #INV-2024-0042"],
      "source": "invoice.pdf"
    },
    "total_amount": {
      "type": "CURRENCY_AMOUNT",
      "value": 1250.00,
      "confidence": 0.95,
      "citations": ["Total: $1,250.00"],
      "source": "invoice.pdf"
    },
    "line_items": {
      "type": "ARRAY",
      "value": [
        {
          "description": {
            "value": "Consulting (10h)",
            "confidence": 0.98,
            "citations": ["Consulting (10h)"]
          },
          "amount": {
            "value": 1000.00,
            "confidence": 0.96,
            "citations": ["$1,000.00"]
          }
        }
      ],
      "confidence": 0.97,
      "citations": [],
      "source": "invoice.pdf"
    }
  }
}
Request
import { IterationLayer } from "iterationlayer";

const client = new IterationLayer({
  apiKey: "YOUR_API_KEY",
});

const result = await client.extract({
  files: [{
    type: "url",
    name: "invoice.pdf",
    url: "https://example.com/invoice.pdf",
  }],
  schema: {
    fields: [
      {
        type: "TEXT",
        name: "invoice_number",
        description: "The invoice number",
      },
      {
        type: "CURRENCY_AMOUNT",
        name: "total_amount",
        description: "The total amount",
      },
      {
        type: "ARRAY",
        name: "line_items",
        description: "Line items",
        fields: [
          { type: "TEXT", name: "description" },
          { type: "CURRENCY_AMOUNT", name: "amount" },
        ],
      },
    ],
  },
});
Response
{
  "success": true,
  "data": {
    "invoice_number": {
      "type": "TEXT",
      "value": "INV-2024-0042",
      "confidence": 0.97,
      "citations": ["Invoice #INV-2024-0042"],
      "source": "invoice.pdf"
    },
    "total_amount": {
      "type": "CURRENCY_AMOUNT",
      "value": 1250.00,
      "confidence": 0.95,
      "citations": ["Total: $1,250.00"],
      "source": "invoice.pdf"
    },
    "line_items": {
      "type": "ARRAY",
      "value": [
        {
          "description": {
            "value": "Consulting (10h)",
            "confidence": 0.98,
            "citations": ["Consulting (10h)"]
          },
          "amount": {
            "value": 1000.00,
            "confidence": 0.96,
            "citations": ["$1,000.00"]
          }
        }
      ],
      "confidence": 0.97,
      "citations": [],
      "source": "invoice.pdf"
    }
  }
}
Request
from iterationlayer import IterationLayer

client = IterationLayer(
    api_key="YOUR_API_KEY"
)

result = client.extract(
    files=[{
        "type": "url",
        "name": "invoice.pdf",
        "url": "https://example.com/invoice.pdf",
    }],
    schema={
        "fields": [
            {
                "type": "TEXT",
                "name": "invoice_number",
                "description": "The invoice number",
            },
            {
                "type": "CURRENCY_AMOUNT",
                "name": "total_amount",
                "description": "The total amount",
            },
            {
                "type": "ARRAY",
                "name": "line_items",
                "description": "Line items",
                "fields": [
                    {"type": "TEXT", "name": "description"},
                    {"type": "CURRENCY_AMOUNT", "name": "amount"},
                ],
            },
        ],
    },
)
Response
{
  "success": true,
  "data": {
    "invoice_number": {
      "type": "TEXT",
      "value": "INV-2024-0042",
      "confidence": 0.97,
      "citations": ["Invoice #INV-2024-0042"],
      "source": "invoice.pdf"
    },
    "total_amount": {
      "type": "CURRENCY_AMOUNT",
      "value": 1250.00,
      "confidence": 0.95,
      "citations": ["Total: $1,250.00"],
      "source": "invoice.pdf"
    },
    "line_items": {
      "type": "ARRAY",
      "value": [
        {
          "description": {
            "value": "Consulting (10h)",
            "confidence": 0.98,
            "citations": ["Consulting (10h)"]
          },
          "amount": {
            "value": 1000.00,
            "confidence": 0.96,
            "citations": ["$1,000.00"]
          }
        }
      ],
      "confidence": 0.97,
      "citations": [],
      "source": "invoice.pdf"
    }
  }
}
Request
import il "github.com/iterationlayer/sdk-go"

client := il.NewClient("YOUR_API_KEY")

result, err := client.Extract(il.ExtractRequest{
  Files: []il.FileInput{
    il.NewFileFromURL(
      "invoice.pdf",
      "https://example.com/invoice.pdf",
    ),
  },
  Schema: il.ExtractionSchema{
    "invoice_number": il.NewTextFieldConfig(
      "invoice_number",
      "The invoice number",
    ),
    "total_amount": il.NewCurrencyAmountFieldConfig(
      "total_amount",
      "The total amount",
    ),
  },
})
Response
{
  "success": true,
  "data": {
    "invoice_number": {
      "type": "TEXT",
      "value": "INV-2024-0042",
      "confidence": 0.97,
      "citations": ["Invoice #INV-2024-0042"],
      "source": "invoice.pdf"
    },
    "total_amount": {
      "type": "CURRENCY_AMOUNT",
      "value": 1250.00,
      "confidence": 0.95,
      "citations": ["Total: $1,250.00"],
      "source": "invoice.pdf"
    },
    "line_items": {
      "type": "ARRAY",
      "value": [
        {
          "description": {
            "value": "Consulting (10h)",
            "confidence": 0.98,
            "citations": ["Consulting (10h)"]
          },
          "amount": {
            "value": 1000.00,
            "confidence": 0.96,
            "citations": ["$1,000.00"]
          }
        }
      ],
      "confidence": 0.97,
      "citations": [],
      "source": "invoice.pdf"
    }
  }
}
Request
curl -X POST \
  https://api.iterationlayer.com/document-to-markdown/v1/convert \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "file": {
    "type": "url",
    "name": "invoice.pdf",
    "url": "https://example.com/invoice.pdf"
  }
}'
Response
{
  "success": true,
  "data": {
    "name": "invoice.pdf",
    "mime_type": "application/pdf",
    "markdown": "# Invoice\n\n**Invoice Number:** INV-2024-0042\n\n**Date:** 2024-03-15\n\n| Description | Qty | Unit Price | Total |\n|---|---|---|---|\n| Consulting | 10h | $100.00 | $1,000.00 |\n| Support | 5h | $80.00 | $400.00 |\n\n**Total: $1,400.00**"
  }
}
Request
import { IterationLayer } from "iterationlayer";

const client = new IterationLayer({
  apiKey: "YOUR_API_KEY",
});

const result = await client.convertToMarkdown({
  file: {
    type: "url",
    name: "invoice.pdf",
    url: "https://example.com/invoice.pdf",
  },
});
Response
{
  "success": true,
  "data": {
    "name": "invoice.pdf",
    "mime_type": "application/pdf",
    "markdown": "# Invoice\n\n**Invoice Number:** INV-2024-0042\n\n**Date:** 2024-03-15\n\n| Description | Qty | Unit Price | Total |\n|---|---|---|---|\n| Consulting | 10h | $100.00 | $1,000.00 |\n| Support | 5h | $80.00 | $400.00 |\n\n**Total: $1,400.00**"
  }
}
Request
from iterationlayer import IterationLayer

client = IterationLayer(
    api_key="YOUR_API_KEY"
)

result = client.convert_to_markdown(
    file={
        "type": "url",
        "name": "invoice.pdf",
        "url": "https://example.com/invoice.pdf",
    }
)
Response
{
  "success": true,
  "data": {
    "name": "invoice.pdf",
    "mime_type": "application/pdf",
    "markdown": "# Invoice\n\n**Invoice Number:** INV-2024-0042\n\n**Date:** 2024-03-15\n\n| Description | Qty | Unit Price | Total |\n|---|---|---|---|\n| Consulting | 10h | $100.00 | $1,000.00 |\n| Support | 5h | $80.00 | $400.00 |\n\n**Total: $1,400.00**"
  }
}
Request
import il "github.com/iterationlayer/sdk-go"

client := il.NewClient("YOUR_API_KEY")

result, err := client.ConvertToMarkdown(il.ConvertRequest{
  File: il.NewFileFromURL(
    "invoice.pdf",
    "https://example.com/invoice.pdf",
  ),
})
Response
{
  "success": true,
  "data": {
    "name": "invoice.pdf",
    "mime_type": "application/pdf",
    "markdown": "# Invoice\n\n**Invoice Number:** INV-2024-0042\n\n**Date:** 2024-03-15\n\n| Description | Qty | Unit Price | Total |\n|---|---|---|---|\n| Consulting | 10h | $100.00 | $1,000.00 |\n| Support | 5h | $80.00 | $400.00 |\n\n**Total: $1,400.00**"
  }
}
Request
curl -X POST \
  https://api.iterationlayer.com/image-transformation/v1/transform \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "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
    }
  ]
}'
Response
{
  "success": true,
  "data": {
    "buffer": "iVBORw0KGgoAAAANSUhEUgAA...",
    "mime_type": "image/webp"
  }
}
Request
import { IterationLayer } from "iterationlayer";

const client = new IterationLayer({
  apiKey: "YOUR_API_KEY",
});

const result = await 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,
    },
  ],
});
Response
{
  "success": true,
  "data": {
    "buffer": "iVBORw0KGgoAAAANSUhEUgAA...",
    "mime_type": "image/webp"
  }
}
Request
from iterationlayer import IterationLayer

client = IterationLayer(
    api_key="YOUR_API_KEY"
)

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,
        },
    ],
)
Response
{
  "success": true,
  "data": {
    "buffer": "iVBORw0KGgoAAAANSUhEUgAA...",
    "mime_type": "image/webp"
  }
}
Request
import il "github.com/iterationlayer/sdk-go"

client := il.NewClient("YOUR_API_KEY")

result, err := client.Transform(il.TransformRequest{
  File: il.NewFileFromURL(
    "photo.jpg",
    "https://example.com/photo.jpg",
  ),
  Operations: []il.TransformOperation{
    il.NewResizeOperation(800, 600, "cover"),
    il.NewConvertOperation("webp"),
  },
})
Response
{
  "success": true,
  "data": {
    "buffer": "iVBORw0KGgoAAAANSUhEUgAA...",
    "mime_type": "image/webp"
  }
}
Request
curl -X POST \
  https://api.iterationlayer.com/image-generation/v1/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "dimensions": {
    "width_in_px": 1200,
    "height_in_px": 630
  },
  "output_format": "png",
  "layers": [
    {
      "index": 0,
      "type": "solid-color",
      "hex_color": "#1e293b"
    },
    {
      "index": 1,
      "type": "text",
      "text": "Weekly Report",
      "font_name": "Inter",
      "font_size_in_px": 48,
      "text_color": "#ffffff",
      "position": {
        "x_in_px": 60,
        "y_in_px": 60
      },
      "dimensions": {
        "width_in_px": 600,
        "height_in_px": 100
      }
    }
  ]
}'
Response
{
  "success": true,
  "data": {
    "buffer": "iVBORw0KGgoAAAANSUhEUgAA...",
    "mime_type": "image/png"
  }
}
Request
import { IterationLayer } from "iterationlayer";

const client = new IterationLayer({
  apiKey: "YOUR_API_KEY",
});

const result = await client.generateImage({
  dimensions: {
    width_in_px: 1200,
    height_in_px: 630,
  },
  output_format: "png",
  layers: [
    {
      index: 0,
      type: "solid-color",
      hex_color: "#1e293b",
    },
    {
      index: 1,
      type: "text",
      text: "Weekly Report",
      font_name: "Inter",
      font_size_in_px: 48,
      text_color: "#ffffff",
      position: { x_in_px: 60, y_in_px: 60 },
      dimensions: {
        width_in_px: 600,
        height_in_px: 100,
      },
    },
  ],
});
Response
{
  "success": true,
  "data": {
    "buffer": "iVBORw0KGgoAAAANSUhEUgAA...",
    "mime_type": "image/png"
  }
}
Request
from iterationlayer import IterationLayer

client = IterationLayer(
    api_key="YOUR_API_KEY"
)

result = client.generate_image(
    dimensions={
        "width_in_px": 1200,
        "height_in_px": 630,
    },
    output_format="png",
    layers=[
        {
            "index": 0,
            "type": "solid-color",
            "hex_color": "#1e293b",
        },
        {
            "index": 1,
            "type": "text",
            "text": "Weekly Report",
            "font_name": "Inter",
            "font_size_in_px": 48,
            "text_color": "#ffffff",
            "position": {
                "x_in_px": 60,
                "y_in_px": 60,
            },
            "dimensions": {
                "width_in_px": 600,
                "height_in_px": 100,
            },
        },
    ],
)
Response
{
  "success": true,
  "data": {
    "buffer": "iVBORw0KGgoAAAANSUhEUgAA...",
    "mime_type": "image/png"
  }
}
Request
import il "github.com/iterationlayer/sdk-go"

client := il.NewClient("YOUR_API_KEY")

result, err := client.GenerateImage(
  il.GenerateImageRequest{
    Dimensions: il.Dimensions{
      WidthInPx:  1200,
      HeightInPx: 630,
    },
    OutputFormat: "png",
    Layers: []il.Layer{
      il.NewSolidColorBackgroundLayer(
        0, "#1e293b",
      ),
      il.NewTextLayer(
        1, "Weekly Report", "Inter",
        48, "#ffffff",
        il.Position{
          XInPx: 60, YInPx: 60,
        },
        il.Dimensions{
          WidthInPx: 600, HeightInPx: 100,
        },
      ),
    },
  },
)
Response
{
  "success": true,
  "data": {
    "buffer": "iVBORw0KGgoAAAANSUhEUgAA...",
    "mime_type": "image/png"
  }
}
Request
curl -X POST \
  https://api.iterationlayer.com/document-generation/v1/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "format": "pdf",
  "document": {
    "metadata": {
      "title": "Quarterly Report"
    },
    "page": {
      "size": { "preset": "A4" },
      "margins": {
        "top_in_pt": 72,
        "right_in_pt": 72,
        "bottom_in_pt": 72,
        "left_in_pt": 72
      }
    },
    "styles": {
      "text": {
        "font_family": "Helvetica",
        "font_size_in_pt": 12,
        "color": "#333333",
        "line_height": 1.5
      },
      "headline": {
        "font_family": "Helvetica",
        "font_size_in_pt": 28,
        "color": "#111111",
        "is_bold": true
      }
    },
    "content": [
      {
        "type": "headline",
        "level": "h1",
        "text": "Quarterly Report"
      },
      {
        "type": "paragraph",
        "markdown": "Revenue grew **23%**."
      }
    ]
  }
}'
Response
{
  "success": true,
  "data": {
    "buffer": "JVBERi0xLjcKMSAwIG9iago8...",
    "mime_type": "application/pdf"
  }
}
Request
import { IterationLayer } from "iterationlayer";

const client = new IterationLayer({
  apiKey: "YOUR_API_KEY",
});

const result = await client.generateDocument({
  format: "pdf",
  document: {
    metadata: { title: "Quarterly Report" },
    page: {
      size: { preset: "A4" },
      margins: {
        top_in_pt: 72,
        right_in_pt: 72,
        bottom_in_pt: 72,
        left_in_pt: 72,
      },
    },
    styles: {
      text: {
        font_family: "Helvetica",
        font_size_in_pt: 12,
        color: "#333333",
        line_height: 1.5,
      },
      headline: {
        font_family: "Helvetica",
        font_size_in_pt: 28,
        color: "#111111",
        is_bold: true,
      },
    },
    content: [
      {
        type: "headline",
        level: "h1",
        text: "Quarterly Report",
      },
      {
        type: "paragraph",
        markdown: "Revenue grew **23%**.",
      },
    ],
  },
});
Response
{
  "success": true,
  "data": {
    "buffer": "JVBERi0xLjcKMSAwIG9iago8...",
    "mime_type": "application/pdf"
  }
}
Request
from iterationlayer import IterationLayer

client = IterationLayer(
    api_key="YOUR_API_KEY"
)

result = client.generate_document(
    format="pdf",
    document={
        "metadata": {
            "title": "Quarterly Report",
        },
        "page": {
            "size": {"preset": "A4"},
            "margins": {
                "top_in_pt": 72,
                "right_in_pt": 72,
                "bottom_in_pt": 72,
                "left_in_pt": 72,
            },
        },
        "styles": {
            "text": {
                "font_family": "Helvetica",
                "font_size_in_pt": 12,
                "color": "#333333",
                "line_height": 1.5,
            },
            "headline": {
                "font_family": "Helvetica",
                "font_size_in_pt": 28,
                "color": "#111111",
                "is_bold": True,
            },
        },
        "content": [
            {
                "type": "headline",
                "level": "h1",
                "text": "Quarterly Report",
            },
            {
                "type": "paragraph",
                "markdown": "Revenue grew **23%**.",
            },
        ],
    },
)
Response
{
  "success": true,
  "data": {
    "buffer": "JVBERi0xLjcKMSAwIG9iago8...",
    "mime_type": "application/pdf"
  }
}
Request
import il "github.com/iterationlayer/sdk-go"

client := il.NewClient("YOUR_API_KEY")

result, err := client.GenerateDocument(
  il.GenerateDocumentRequest{
    Format: "pdf",
    Document: il.DocumentDefinition{
      Metadata: il.DocumentMetadata{
        Title: "Quarterly Report",
      },
      Page: il.DocumentPage{
        Size: il.DocPageSize{
          Preset: "A4",
        },
        Margins: il.DocMargins{
          TopInPt:    72,
          RightInPt:  72,
          BottomInPt: 72,
          LeftInPt:   72,
        },
      },
      Styles: il.DocumentStyles{
        Text: il.TextStyle{
          FontFamily:  "Helvetica",
          FontSizeInPt: 12,
          Color:       "#333333",
          LineHeight:  1.5,
        },
        Headline: il.HeadlineStyle{
          FontFamily:  "Helvetica",
          FontSizeInPt: 28,
          Color:       "#111111",
        },
      },
      Content: []il.ContentBlock{
        il.NewHeadlineBlock(
          "h1", "Quarterly Report",
        ),
        il.ParagraphBlock{
          Type:     "paragraph",
          Markdown: "Revenue grew **23%**.",
        },
      },
    },
  },
)
Response
{
  "success": true,
  "data": {
    "buffer": "JVBERi0xLjcKMSAwIG9iago8...",
    "mime_type": "application/pdf"
  }
}
Request
curl -X POST \
  https://api.iterationlayer.com/sheet-generation/v1/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "format": "xlsx",
  "styles": {
    "header": {
      "is_bold": true,
      "background_color": "#4472C4",
      "font_color": "#FFFFFF"
    }
  },
  "sheets": [
    {
      "name": "Q1 Revenue",
      "columns": [
        {
          "name": "Region",
          "width": 20
        },
        {
          "name": "Jan",
          "width": 15
        },
        {
          "name": "Feb",
          "width": 15
        },
        {
          "name": "Total",
          "width": 15
        }
      ],
      "rows": [
        [
          {
            "value": "EMEA",
            "from_col": 0,
            "to_col": 3,
            "styles": {
              "is_bold": true
            }
          }
        ],
        [
          {
            "value": "Germany"
          },
          {
            "value": 12500,
            "format": "currency",
            "currency_code": "EUR"
          },
          {
            "value": 14200,
            "format": "currency",
            "currency_code": "EUR"
          },
          {
            "value": "=SUM(B3:C3)",
            "format": "currency",
            "currency_code": "EUR"
          }
        ],
        [
          {
            "value": "France"
          },
          {
            "value": 9800,
            "format": "currency",
            "currency_code": "EUR",
            "number_style": "space_comma"
          },
          {
            "value": 11300,
            "format": "currency",
            "currency_code": "EUR",
            "number_style": "space_comma"
          },
          {
            "value": "=SUM(B4:C4)",
            "format": "currency",
            "currency_code": "EUR"
          }
        ]
      ]
    }
  ]
}'
Response
{
  "success": true,
  "data": {
    "buffer": "UEsDBBQAAAAIAA...",
    "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
  }
}
Request
import { IterationLayer } from "iterationlayer";

const client = new IterationLayer({
  apiKey: "YOUR_API_KEY",
});

const result = await client.generateSheet({
  format: "xlsx",
  styles: {
    header: {
      is_bold: true,
      background_color: "#4472C4",
      font_color: "#FFFFFF",
    },
  },
  sheets: [
    {
      name: "Q1 Revenue",
      columns: [
        {
          name: "Region",
          width: 20,
        },
        {
          name: "Jan",
          width: 15,
        },
        {
          name: "Feb",
          width: 15,
        },
        {
          name: "Total",
          width: 15,
        },
      ],
      rows: [
        [
          {
            value: "EMEA",
            from_col: 0,
            to_col: 3,
            styles: { is_bold: true },
          },
        ],
        [
          {
            value: "Germany",
          },
          {
            value: 12500,
            format: "currency",
            currency_code: "EUR",
          },
          {
            value: 14200,
            format: "currency",
            currency_code: "EUR",
          },
          {
            value: "=SUM(B3:C3)",
            format: "currency",
            currency_code: "EUR",
          },
        ],
        [
          {
            value: "France",
          },
          {
            value: 9800,
            format: "currency",
            currency_code: "EUR",
            number_style: "space_comma",
          },
          {
            value: 11300,
            format: "currency",
            currency_code: "EUR",
            number_style: "space_comma",
          },
          {
            value: "=SUM(B4:C4)",
            format: "currency",
            currency_code: "EUR",
          },
        ],
      ],
    },
  ],
});
Response
{
  "success": true,
  "data": {
    "buffer": "UEsDBBQAAAAIAA...",
    "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
  }
}
Request
from iterationlayer import IterationLayer

client = IterationLayer(
    api_key="YOUR_API_KEY"
)

result = client.generate_sheet(
    format="xlsx",
    styles={
        "header": {
            "is_bold": True,
            "background_color": "#4472C4",
            "font_color": "#FFFFFF",
        },
    },
    sheets=[
        {
            "name": "Q1 Revenue",
            "columns": [
                {
                    "name": "Region",
                    "width": 20,
                },
                {
                    "name": "Jan",
                    "width": 15,
                },
                {
                    "name": "Feb",
                    "width": 15,
                },
                {
                    "name": "Total",
                    "width": 15,
                },
            ],
            "rows": [
                [
                    {
                        "value": "EMEA",
                        "from_col": 0,
                        "to_col": 3,
                        "styles": {"is_bold": True},
                    },
                ],
                [
                    {
                        "value": "Germany",
                    },
                    {
                        "value": 12500,
                        "format": "currency",
                        "currency_code": "EUR",
                    },
                    {
                        "value": 14200,
                        "format": "currency",
                        "currency_code": "EUR",
                    },
                    {
                        "value": "=SUM(B3:C3)",
                        "format": "currency",
                        "currency_code": "EUR",
                    },
                ],
                [
                    {
                        "value": "France",
                    },
                    {
                        "value": 9800,
                        "format": "currency",
                        "currency_code": "EUR",
                        "number_style": "space_comma",
                    },
                    {
                        "value": 11300,
                        "format": "currency",
                        "currency_code": "EUR",
                        "number_style": "space_comma",
                    },
                    {
                        "value": "=SUM(B4:C4)",
                        "format": "currency",
                        "currency_code": "EUR",
                    },
                ],
            ],
        },
    ],
)
Response
{
  "success": true,
  "data": {
    "buffer": "UEsDBBQAAAAIAA...",
    "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
  }
}
Request
import il "github.com/iterationlayer/sdk-go"

client := il.NewClient("YOUR_API_KEY")

result, err := client.GenerateSheet(
  il.GenerateSheetRequest{
    Format: "xlsx",
    Styles: &il.SheetStyles{
      Header: &il.CellStyle{
        IsBold:          true,
        BackgroundColor: "#4472C4",
        FontColor:       "#FFFFFF",
      },
    },
    Sheets: []il.Sheet{
      {
        Name: "Q1 Revenue",
        Columns: []il.SheetColumn{
          {
            Name:  "Region",
            Width: 20,
          },
          {
            Name:  "Jan",
            Width: 15,
          },
          {
            Name:  "Feb",
            Width: 15,
          },
          {
            Name:  "Total",
            Width: 15,
          },
        },
        Rows: [][]il.SheetCell{
          {
            {
              Value:   "EMEA",
              FromCol: ptr(0),
              ToCol:   ptr(3),
              Styles:  &il.CellStyle{IsBold: true},
            },
          },
          {
            {
              Value: "Germany",
            },
            {
              Value:        12500,
              Format:       "currency",
              CurrencyCode: "EUR",
            },
            {
              Value:        14200,
              Format:       "currency",
              CurrencyCode: "EUR",
            },
            {
              Value:        "=SUM(B3:C3)",
              Format:       "currency",
              CurrencyCode: "EUR",
            },
          },
          {
            {
              Value: "France",
            },
            {
              Value:        9800,
              Format:       "currency",
              CurrencyCode: "EUR",
              NumberStyle:  "space_comma",
            },
            {
              Value:        11300,
              Format:       "currency",
              CurrencyCode: "EUR",
              NumberStyle:  "space_comma",
            },
            {
              Value:        "=SUM(B4:C4)",
              Format:       "currency",
              CurrencyCode: "EUR",
            },
          },
        },
      },
    },
  },
)
Response
{
  "success": true,
  "data": {
    "buffer": "UEsDBBQAAAAIAA...",
    "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
  }
}

Official SDKs for every major language

Install the SDK, set your API key, and start chaining requests. Full type safety, automatic retries, and idiomatic error handling included.

Your data stays in the EU

Your data is processed on EU servers and never stored beyond temporary logs. Zero retention, GDPR-compliant by design, with a Data Processing Agreement available for every customer. Learn more about our security practices .

No data storage

We don't store your files or processing results. Logs are automatically deleted after 90 days.

EU-hosted infrastructure

All processing runs on servers located in the European Union. Your data never leaves the EU.

GDPR-compliant by design

Full compliance with EU data protection regulations. Data Processing Agreement available for all customers.

Pricing

Start with free trial credits. No credit card required.

Developer

For individuals & small projects

$29.99 /per month
  • 1,000 credits / month
    That's either: 1,000 image transformations 500 document generations 500 image generations 500 sheet generations 200 document extractions (5-page docs) 200 markdown conversions (5-page docs)
  • All APIs included
  • Free trial credits per API
  • Email support
  • Budget caps per key
  • Optional auto top-up
Most Popular

Startup

Save 40%

For growing teams

$119.99 /per month
  • 5,000 credits / month
    That's either: 5,000 image transformations 2,500 document generations 2,500 image generations 2,500 sheet generations 1,000 document extractions (5-page docs) 1,000 markdown conversions (5-page docs)
  • All APIs included
  • Free trial credits per API
  • Priority support
  • Budget caps per key
  • Optional auto top-up

Business

Save 47%

For high-volume workloads

$319.99 /per month
  • 15,000 credits / month
    That's either: 15,000 image transformations 7,500 document generations 7,500 image generations 7,500 sheet generations 3,000 document extractions (5-page docs) 3,000 markdown conversions (5-page docs)
  • All APIs included
  • Free trial credits per API
  • Priority support
  • Budget caps per key
  • Optional auto top-up

Build your first workflow in minutes

Chain our APIs together and ship a complete pipeline before lunch. Free trial credits included — no credit card required.