Starters · 1000 × 400 · 10 layers · 6 variables · ticket, qr, pdf

Event ticket with QR

A wide ticket: event, date and venue on the left, the holder's name and seat, a perforation, and a QR code of the ticket URL on the right.

live · POST /v1/images1000 × 400
Event ticket with QR, rendered with the sample variables
rendering…
rendered with the sample variables · change them and render again
Open in the editor
the same render with your saved copy
curl -X POST https://api.imageapis.com/v1/images \
  -H 'X-API-Key: YOUR_KEY' -H 'Content-Type: application/json' \
  -d '{"template": "tpl_…", "variables": {"event": "Postgres at Scale, Austin", "date": "Tue 4 Nov 2026 · 18:30", "venue": "Moody Theater", "name": "Dana Reyes", "seat": "B-14", "ticket_url": "https://example.com/t/8f3k2"}}'

Make it yours

Copy the starter into your account once; from then on it is a template id you render with new variables. Creating and reading templates is free.

curl -s https://api.imageapis.com/v1/starters/event-ticket -H 'X-API-Key: YOUR_KEY' | jq .template > event-ticket.json
curl -X POST https://api.imageapis.com/v1/templates -H 'X-API-Key: YOUR_KEY' \
  -H 'Content-Type: application/json' -d @event-ticket.json
# → { "id": "tpl_…", "object": "template", … }

Change any layer by name at render time with modifications, or change the design itself in the editor and save it back with PUT /v1/templates/<id>.

Layers

NameTypex, ySizeContent
bandrect0, 01000 × 18
labeltext56, 56600 × 28ADMIT ONE
eventtext56, 92620 × 110{{event}}
datetext56, 214620 × 34{{date}}
venuetext56, 250620 × 34{{venue}}
holdertext56, 320420 × 40{{name}}
seattext480, 320196 × 40Seat {{seat}}
perforationrect716, 402 × 320
qrqr760, 90200 × 200{{ticket_url}}
scantext740, 304240 × 30Scan at the door

The template

Show the JSON (10 layers)
{
  "name": "Event ticket",
  "width": 1000,
  "height": 400,
  "background": "#ffffff",
  "layers": [
    {
      "name": "band",
      "type": "rect",
      "x": 0,
      "y": 0,
      "width": 1000,
      "height": 18,
      "fill": "#6366f1"
    },
    {
      "name": "label",
      "type": "text",
      "x": 56,
      "y": 56,
      "width": 600,
      "height": 28,
      "text": "ADMIT ONE",
      "font": "Inter",
      "weight": 700,
      "size": 18,
      "color": "#6366f1",
      "letter_spacing": 3
    },
    {
      "name": "event",
      "type": "text",
      "x": 56,
      "y": 92,
      "width": 620,
      "height": 110,
      "text": "{{event}}",
      "font": "Space Grotesk",
      "weight": 700,
      "size": 48,
      "color": "#0b1220",
      "fit": "shrink",
      "max_lines": 2,
      "line_height": 1.05
    },
    {
      "name": "date",
      "type": "text",
      "x": 56,
      "y": 214,
      "width": 620,
      "height": 34,
      "text": "{{date}}",
      "font": "Inter",
      "weight": 500,
      "size": 24,
      "color": "#334155"
    },
    {
      "name": "venue",
      "type": "text",
      "x": 56,
      "y": 250,
      "width": 620,
      "height": 34,
      "text": "{{venue}}",
      "font": "Inter",
      "weight": 400,
      "size": 24,
      "color": "#64748b"
    },
    {
      "name": "holder",
      "type": "text",
      "x": 56,
      "y": 320,
      "width": 420,
      "height": 40,
      "text": "{{name}}",
      "font": "Inter",
      "weight": 700,
      "size": 26,
      "color": "#0b1220",
      "valign": "middle"
    },
    {
      "name": "seat",
      "type": "text",
      "x": 480,
      "y": 320,
      "width": 196,
      "height": 40,
      "text": "Seat {{seat}}",
      "font": "JetBrains Mono",
      "weight": 500,
      "size": 24,
      "color": "#0b1220",
      "valign": "middle",
      "align": "right"
    },
    {
      "name": "perforation",
      "type": "rect",
      "x": 716,
      "y": 40,
      "width": 2,
      "height": 320,
      "fill": "#cbd5e1"
    },
    {
      "name": "qr",
      "type": "qr",
      "x": 760,
      "y": 90,
      "width": 200,
      "height": 200,
      "data": "{{ticket_url}}",
      "color": "#0b1220",
      "background": "#ffffff",
      "margin": 1
    },
    {
      "name": "scan",
      "type": "text",
      "x": 740,
      "y": 304,
      "width": 240,
      "height": 30,
      "text": "Scan at the door",
      "font": "Inter",
      "weight": 500,
      "size": 18,
      "color": "#64748b",
      "align": "center"
    }
  ]
}