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 250 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 and 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 Image Format

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

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 Contract Clause Data

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

Extract Customs Declaration

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

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 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 Rental Application

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

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

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 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 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.

Optimize Product Photo

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

Process Real Estate Photo

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

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.

Chain these into your own pipelines

Coming Soon

Every recipe is a building block. Chain extraction, transformation, and generation into multi-step workflows — in code, or visually with n8n and Zapier. One API key, one credit pool, no glue code between steps.

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/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 30 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.

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.