Render infrastructure for agents

Lamina is media rendering infrastructure for your agents/apps. Pass a brief & your brand - get a campaign back. Auto-routing, prompt optimization, brand guards, & media feeds.

fal.ai generates images. Lamina generates your media.

quickstart — 3 steps
1npx @lamina/mcp install
2“Generate a product shot for Homestead SS26”
3→ 4 brand-locked assets in ~12s
// Claude / Cursor — one MCP install $
the platform / 03

One pipeline. Four endpoints.

Every Lamina app — from product shoots to brand films — is built on the same four primitives. Compose them, or call the apps that already chain them for you.

base · api.uselamina.ai/v1
auth · bearer
01Create
POST/v1/apps/{app}

Pick an app, pass a brief. Lamina routes it across the right models.

02Track
GET/v1/jobs/{id}/stream

Stream phases — queued → composing → rendering → done — with progress.

03Evaluate
POST/v1/evaluate

Score each asset against the brand kit. Reject off-brand before they ship.

04Distribute
POST/v1/distribute

Push to S3, Drive, Sanity, Shopify, or your own webhook. Versioned.

outputs / 04

What you can generate.

Six built-in apps cover most of the catalogue. Each one is a tuned pipeline — not a single model — and each one knows your brand.

see all 30+ apps →
apps.productShoot()

Product shoots

Studio-grade stills with controlled backgrounds, angles, and lighting.

lamina.apps.productShoot({ brief, brand })
1:14:516:95 params
apps.verticalReel()

Vertical reels

Motion-first short video for Instagram, TikTok, YouTube Shorts.

lamina.apps.verticalReel({ brief, brand })
9:165 params
apps.adVariant()

Ad variants

Localized, resized, on-brand display ads. Dozens from one brief.

lamina.apps.adVariant({ brief, brand, sizes })
1:14:516:99:165 params
apps.virtualTryOn()

Virtual try-on

Garments on AI models across body types, poses, and settings.

lamina.apps.virtualTryOn({ garment_url, brand })
4:51:14 params
apps.campaignBanner()

Campaign banners

Hero banners and display ads matched to your brand system.

lamina.apps.campaignBanner({ brief, brand })
16:91:14:55 params
apps.brandFilm()

Brand films

Storyboard, generate, and edit short brand films end-to-end.

lamina.apps.brandFilm({ brief, brand })
16:99:165 params
positioning / 05

Why not just call models?

Raw model endpoints are the easy part. What kills you is the orchestration — and the brand drift. Lamina is the layer between you and the chaos.

Brand consistency
×Manual prompt engineering per run
Brand kit attached once, enforced everywhere
Model routing
×You pick and manage each model
Auto-routed across 15+ models
Multi-ratio output
×Separate call per aspect ratio
One call, all ratios returned
Asset evaluation
×Manual review of every output
Automated brand-fit scoring with reasons
Distribution
×Build your own pipeline
S3, Shopify, Sanity, Drive built-in
SDK surface
×5 SDKs, 5 auth flows, 5 webhooks
One SDK. One webhook. One auth header.
Billing
×5 invoices, 5 quotas to reconcile
One bill. One quota. One dashboard.
Agent support
×Build tool wrappers yourself
5 MCP tools, install in one command

The moat isn't orchestration. It's brand memory — every output, unmistakably yours.

agents / 06

Built for AI agents.

An agent shouldn't need to know which model is best at sage linen on teak. It should call a tool, get a job, watch it stream, and keep moving.

Structured Output

Typed JSON responses with Zod schemas. Perfect for agent parsing.

Idempotent & Streamable

Safe to retry. SSE for every long-running job. Agents stay informed.

Deterministic

Same brief + brand + seed produces the same output. Reproducible pipelines.

agent workflow · 5 tools
// Complete agent workflow: brief → brand-checked assets → shipped
// Works in Claude, Cursor, Windsurf, or any MCP client

// 1. Look up the brand rules first
const brand = await lamina.brand_lookup("homestead");
// → { palette: [...], voice: "warm minimal", dos: [...], donts: [...] }

// 2. Generate product shots using brand context
const job = await lamina.create("product_shoot", {
  brief: "linen tee on teak, north light, 35mm",
  brand: "homestead", variants: 4
});

// 3. Stream until done
await lamina.track(job.id);

// 4. Score against brand kit — keep only high scorers
const scored = await lamina.evaluate(job.id, { rubric: "brand" });

// 5. Ship the keepers to Shopify + S3
await lamina.distribute(scored.assets.filter(a => a.score >= 0.8), {
  targets: [{ kind: "shopify", collection: "ss26" }, {kind: "s3" }]
});
works in · claude · cursor · windsurf · vs code · zed · raycast · n8n · zapier
trust & scale

Already shipping at production scale.

The same API powering 500+ brand teams now powers your agents. SOC 2 certified, EU residency available, 99.95% uptime SLA on the production tier.

500+
teams using the API
4.1M
assets shipped (30d)
99.95%
API uptime
11.8s
p50 latency
96.4%
brand-fit pass rate
<2min
time to first asset
compliance
SOC 2 Type IIGDPREU residency99.95% SLASSO / SCIM
powering teams at
RemiMyntraITCSHEINDaburHomesteadMarlowAster
get started

Stop calling models.
Call apps.

Free tier — 100 generations, no credit card. Production keys in one click. MCP install in one command.