Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.uselamina.ai/llms.txt

Use this file to discover all available pages before exploring further.

Use this guide when you want to turn Lamina into a product feature, not just call a raw model. Each recipe below uses the same execution pattern:
  1. discover the right app
  2. inspect its schema
  3. start an execution
  4. receive results by webhook or polling
That makes the API predictable for application developers even when the underlying workflow changes.

The Real API Behind Every Recipe

The /v1 API has 24 endpoints across 9 groups. The core execution flow uses:
  • GET /v1/apps — discover apps
  • GET /v1/apps/{appId} — inspect inputs
  • POST /v1/apps/{appId}/runs — run
  • GET /v1/runs/{runId} — poll results
Additional groups — Intelligence, Publishing, Content, Templates, Assets, Account — extend what you can do after execution. See the full API Reference.

Core Contract

Capability needCurrent executable Lamina endpoint
Start image, catalog, try-on, or video workPOST /v1/apps/{appId}/runs
Check job statusGET /v1/runs/{runId}
Stream job progress in real timeGET /v1/runs/{runId}/stream
Discover which app to callGET /v1/apps
Verify the exact input schemaGET /v1/apps/{appId}
Intelligent content creation (agent-friendly)POST /v1/content/create
Batch multiple creationsPOST /v1/content/batch
Get brand context for grounded promptsGET /v1/intelligence/brand-context
Publish to social channelsPOST /v1/publishing/publish
Check credit balanceGET /v1/account/usage

Authentication

x-api-key: lma_your_api_key
Authorization: Bearer lma_your_api_key

Rate Limits

All /v1/* endpoints are currently limited to 100 requests per minute per IP. On 429 Too Many Requests, read these headers before retrying:
  • RateLimit-Limit
  • RateLimit-Remaining
  • RateLimit-Reset
  • Retry-After

Common Status Codes

StatusMeaning
200Successful read
202Execution accepted and queued
400Invalid request body, webhook URL, or inputs
401Missing or invalid API key
403Workspace or app access denied
404App or execution not found
429Rate limit exceeded
500Unexpected server-side failure

Example Public Apps By Capability

These are example public apps observed on April 11, 2026. Use them as capability anchors in docs or demos, but pin the exact appId you want to support in production and re-check its schema with GET /v1/apps/{appId} before you ship against it.
CapabilityExample public appExample appId
Single image generationProduct Shots with Mood Boardec7ec3ce-69b4-43c9-8eea-fe9752d679a4
Batch catalog generationPremium Catalog 1.0bbb17293-5fe7-4645-8c6e-0745bc28254d
Batch catalog generationSwift Catalog Generationde5cca6b-73aa-4e27-a714-3339024db15d
Virtual try-onProduct Try ona76e85ec-20b4-4fbc-99ad-055423a868a2
Video generationEyewear Shoot (Multi-Shot 21s Video)1afc70fd-cb66-4f44-847d-bdaf7e237be4
Video generationPerformance Marketing Video (V3) Sampleec9b3525-4b72-4083-a6cb-00371672e128

Ecommerce Image Generation

Use this pattern for:
  • product shots
  • background swaps
  • lifestyle scenes
  • hero images
Recommended backing app example: Product Shots with Mood Board

Typical integration flow

curl -H "Authorization: Bearer $LAMINA_API_KEY" \
  "https://app.uselamina.ai/v1/apps?search=product"
Then inspect the chosen app and use the returned parameter names exactly:
curl -H "Authorization: Bearer $LAMINA_API_KEY" \
  https://app.uselamina.ai/v1/apps/<appId>
curl -X POST \
  -H "Authorization: Bearer $LAMINA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "inputs": {
      "<parameter name from GET /v1/apps/{appId}>": "<value>"
    }
  }' \
  https://app.uselamina.ai/v1/apps/<appId>/runs

What developers usually send

  • a product image URL or a set of source images
  • optional reference imagery
  • a prompt or creative brief
  • styling or environment choices exposed as options

What to expect back

  • one or more generated image outputs
  • occasional text outputs for summaries or metadata
  • queued or running before final media is ready

Catalog And Merchandising Automation

Catalog workflows are usually run by commerce backends, merchant tooling, or creative ops teams that need consistent outputs across many products. Recommended backing app examples:
  • Premium Catalog 1.0
  • Swift Catalog Generation
For a concrete catalog payload, the existing Quick Start example uses:
  • front image URL
  • back image URL
  • model or style options such as gender, ethnicity, body type, and location
Example execution body:
{
  "inputs": {
    "Front": "https://example.com/front.jpg",
    "Back": "https://example.com/back.jpg",
    "Model Gender": "Female",
    "Location": "Studio"
  }
}
Send it to:
POST /v1/apps/{catalogAppId}/runs

Good fit for

  • marketplace seller onboarding
  • catalog enrichment pipelines
  • merchandising teams refreshing seasonal collections
  • internal creative production systems

Virtual Try-On

Try-on integrations usually combine shopper-uploaded imagery, mannequin imagery, or model imagery with garment assets supplied by a commerce system. Recommended backing app example: Product Try on Suggested discovery query:
curl -H "Authorization: Bearer $LAMINA_API_KEY" \
  "https://app.uselamina.ai/v1/apps?search=try on"
Expected input pattern:
  • one or more person or selfie image URLs
  • one or more garment image URLs
  • optional fit, pose, or styling fields depending on the app
Execution call:
curl -X POST \
  -H "Authorization: Bearer $LAMINA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "inputs": {
      "<selfie parameter>": "https://example.com/person.jpg",
      "<garment parameter>": "https://example.com/garment.jpg"
    }
  }' \
  https://app.uselamina.ai/v1/apps/<tryOnAppId>/runs

Common platform pattern

  • fetch the app schema at startup or cache it server-side
  • render the form dynamically for internal tooling or merchant portals
  • pass the resulting execution ID into your job UI
  • use webhooks for completion updates instead of aggressive polling

Video Generation

Video generation follows the same app-execution pattern, but jobs are more likely to be long-running and media-heavy. This is a good fit for product marketing tools, seller studios, and content platforms generating motion assets from still inputs. Recommended backing app examples:
  • Eyewear Shoot (Multi-Shot 21s Video)
  • Performance Marketing Video (V3) Sample
Suggested discovery query:
curl -H "Authorization: Bearer $LAMINA_API_KEY" \
  "https://app.uselamina.ai/v1/apps?search=video"
Common input pattern:
  • one or more source image URLs
  • optional product or motion brief text
  • optional aspect ratio, duration, or style fields from app metadata
Execution call:
curl -X POST \
  -H "Authorization: Bearer $LAMINA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "inputs": {
      "<image parameter>": "https://example.com/product.jpg",
      "<prompt parameter>": "Create a premium ecommerce product reel"
    }
  }' \
  "https://app.uselamina.ai/v1/apps/<videoAppId>/runs?webhook=https://your-server.com/callback"
Use webhooks in production for video jobs. They are often long-running enough that polling is only a fallback.

Job Status And Result Retrieval

Every capability above resolves to the same status check:
GET /v1/runs/{runId}
Use the run ID returned from POST /v1/apps/{appId}/runs. Poll every 3-5 seconds until the run reaches completed or failed. If you are using webhooks, verify the callback signature with:
GET /v1/webhooks/signing-key

Production Guidelines

If you are building a customer-facing integration or partner API on top of Lamina:
  1. pin the appId values you support instead of relying on search at runtime
  2. re-fetch app metadata when you deploy changes to a workflow or form
  3. validate inputs against the latest parameter schema before execution
  4. prefer webhooks for long-running image and video jobs
  5. design your UI around execution states, not immediate outputs
The underlying API stays small on purpose. Most of the product-specific behavior lives in the apps you choose to expose.