Skip to content
jsontoimg
Start free

Image Generation APIImages from your data, not your designers' time.

POST /api/v1/render with a template ID and the layers that change. PNG, JPG, WebP, or AVIF comes back as a signed URL. You do not run Chromium.

25 free API images. No card required.

Try the image API

01 Send data

  • REST API
  • Node, Python, PHP
  • n8n & WordPress
  • Claude, Cursor (MCP)
POST /api/v1/render
{
"template": "tpl_editorial_quote",
"format": "png",
"layers": {
"headline": {
}
}
}

Edit the text. The image updates as you type.

02 Render the template

Rendered from named layer1080 × 1080

03 Get a file

  • PNG, JPG, WebP, AVIFPick the format and scale up to 5×
  • PDFCertificates, tickets, badges, reports
  • Signed URLDrop it in an <img> tag or og:image
  • Your bucketBring your own S3 or R2 on Scale

Templates render on our own worker, not a headless browser you maintain. Identical signed URLs stream straight from cache.

How it works.

  1. 01

    Design a template

    Lay out text, photos, badges, and QR codes in J2I Studio and name the layers you want to override.

  2. 02

    Send named layers

    Call POST /api/v1/render from REST, @j2i/sdk, n8n, WordPress, or an MCP client.

  3. 03

    Deliver anywhere

    Wait synchronously with ?wait=, stream SSE, take an HMAC webhook, or mint a signed <img> URL.

Capabilities

Built for production payloads.

  • Wait, stream, or walk away

    Default POST returns HTTP 202 queued. ?wait= blocks up to 120 seconds. SSE, long-poll, and HMAC webhooks cover async pipelines.

  • Unknown layers fail loudly

    Any layer name missing from the template returns 422 instead of silently shipping placeholder copy. dryRun checks payloads for free.

  • Signed URLs for tags

    POST /api/v1/img/sign mints an HMAC URL. The first unique GET renders and bills once; repeats stream the stored file with no API key in HTML.

  • Four still formats + 5× scale

    PNG, JPG, WebP, and AVIF with alpha transparency on PNG, WebP, and AVIF. Scale from 2× on Free up to 5× on Scale.

  • Batches of 50 jobs

    POST /api/v1/renders/batch queues up to 50 renders in one call, including automatic variant fan-out.

  • Live template schema

    GET /api/v1/templates/{id}/schema lists every named layer and its accepted attributes so forms and agents never guess.

A few lines in any stack.

curl -X POST "https://app.jsontoimg.com/api/v1/render?wait=30" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "template": "YOUR_TEMPLATE_ID",
    "format": "png",
    "scale": 2,
    "layers": {
      "headline": { "text": "Welcome, Alex" },
      "photo": { "image_url": "https://acme.dev/alex.jpg" }
    }
  }'
200image/pngwelcome-alex.png
2× · 1200 × 630jsontoimg

Welcome, Alex

Your workspace is ready. One template, every row rendered on demand.

AC

acme.dev/alex.jpg

photo · cover fit

No-code & CMS automation

Render an image or a PDF for every spreadsheet row, WordPress post, or webhook event.

Connect over HTTP & signed webhooks

  • Zapier (HTTP)
  • Make (HTTP)
  • Webhooks
  • Shopify
  • GitHub Actions
  • REST
  • CLI
See all integrations

AI agents, over MCP

Point your assistant at /mcp. Eleven tools around templates, schemas, and renders.

https://app.jsontoimg.com/mcp

$ claude mcp add --transport http jsontoimg https://app.jsontoimg.com/mcp

> Render an Open Graph card for our v1.4 release post

✓ list_templates · 8 templates

✓ get_template_schema · headline, author, version_tag

✓ create_render · release-v1-4.png

  • Cursor
  • Claude Code
  • Claude Desktop
  • VS Code
  • Windsurf
Set up the MCP server

Your first 25 images are on us.

Design a template, grab an API key, and render your first PNG or PDF in minutes. No card required.