Skip to content
LumenClip
Docs

Carousels rendered from JSON.

LumenClip is a JSON-driven carousel rendering engine. Describe every slide once as a spec, fill its image and text slots, and get pixel-exact PNGs ready for TikTok and Instagram.

Create account Read the docs
{
  "version": 1,
  "canvas": { "preset": "9:16", "background": "#111111" },
  "slots": {
    "hook": { "type": "text", "required": true },
    "photo": { "type": "image", "required": true }
  },
  "slides": [{
    "id": "hook",
    "layers": [
      { "id": "bg", "type": "image",
        "src": { "slot": "photo" },
        "frame": { "inset": 0 }, "fit": "cover" },
      { "id": "title", "type": "text",
        "text": "{{hook}}", "style": "hook",
        "frame": { "x": "50%", "y": "14%",
                   "width": "84%", "anchor": "top" } }
    ]
  }]
}
hook.png
item-1.png
item-2.png

One input

A JSON spec is the only thing the renderer reads.

One engine

The preview and the server use the same code.

Up to 35 slides

Enough for a full TikTok photo carousel.

Private by default

Every file is checked against its owner.

From spec to posted carousel.

Describe the slides in JSON

Canvas, fonts, theme, and every image, text, and shape layer are explicit fields. Nothing is guessed.

Turn it into a template

Declare named slots for images, copy, colours, and lists. A list slot repeats slides for variable-length carousels.

Fill the slots

Pick uploads, a collection image, a seeded random pick from a collection, or a Pexels or Pinterest result.

Explicit layout, no hidden heuristics.

Bundled typefaces

21 display, serif, script, and handwritten faces plus Inter, rendered with the real font files on the server.

Stacks and grids

Absolute, stack, and grid groups with gaps, padding, corner radius, and clipping for collages and lists.

Validation with paths

Every error carries a code and a JSON Pointer, so a bad field is easy to find in a pasted spec.

API keys and MCP

Your media stays yours.

Uploads, collections, and rendered slides live in private storage tied to your account.

Owner-checked files

Every image is served through a route that verifies the signed-in owner.

Guarded remote images

Image URLs in a spec are fetched with private-network blocking and a size cap.

Hashed API keys

Keys are shown once at creation and stored only as a hash.

Read-only history

A render keeps its resolved spec; changing a template never rewrites past output.

Questions before you start?

Is there a design editor?

No. A spec is the single source of truth for layout. The app gives you a visual way to fill template slots and preview the result, not a canvas to drag things around on.

Does it write my copy?

No. LumenClip renders exactly the text you provide. Bring copy from your own process, a spreadsheet, or an agent.

Which outputs are supported?

PNG per slide by default, with optional JPEG or WebP, plus a ZIP of the whole carousel.

Can I render from my own code?

Yes. The REST API under /api/v1 validates specs, creates renders, and returns signed slide URLs. Small renders return immediately; larger ones are queued.

Is my media private?

Uploads and renders live in private storage and are served only through routes that check you own them. Share links use signed tokens.

Render your first carousel from a starter template.

Pick a template, drop in your photos and copy, and download the slides in under a minute.

Create account
LumenClip

The JSON-driven carousel rendering engine for TikTok and Instagram slideshows.

DocsLog inPrivacyTermsCompany LinkedInYe Xinkang · CofounderFiona Wang · Cofounder
© 2026 LumenClip

Render and ship

Get one PNG per slide plus a ZIP, then publish or schedule the carousel to TikTok or Instagram.

Render from scripts with a workspace API key, or let an agent call the same tools over MCP.

Calendar

Scheduled and published posts sit on one calendar, with in-app reminders before they go out.

Deterministic output

The resolved spec is stored with every render, so a historical render always reproduces the same pixels.