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:
- discover the right app
- inspect its schema
- start an execution
- 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 need | Current executable Lamina endpoint |
|---|
| Start image, catalog, try-on, or video work | POST /v1/apps/{appId}/runs |
| Check job status | GET /v1/runs/{runId} |
| Stream job progress in real time | GET /v1/runs/{runId}/stream |
| Discover which app to call | GET /v1/apps |
| Verify the exact input schema | GET /v1/apps/{appId} |
| Intelligent content creation (agent-friendly) | POST /v1/content/create |
| Batch multiple creations | POST /v1/content/batch |
| Get brand context for grounded prompts | GET /v1/intelligence/brand-context |
| Publish to social channels | POST /v1/publishing/publish |
| Check credit balance | GET /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
| Status | Meaning |
|---|
200 | Successful read |
202 | Execution accepted and queued |
400 | Invalid request body, webhook URL, or inputs |
401 | Missing or invalid API key |
403 | Workspace or app access denied |
404 | App or execution not found |
429 | Rate limit exceeded |
500 | Unexpected 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.
| Capability | Example public app | Example appId |
|---|
| Single image generation | Product Shots with Mood Board | ec7ec3ce-69b4-43c9-8eea-fe9752d679a4 |
| Batch catalog generation | Premium Catalog 1.0 | bbb17293-5fe7-4645-8c6e-0745bc28254d |
| Batch catalog generation | Swift Catalog Generation | de5cca6b-73aa-4e27-a714-3339024db15d |
| Virtual try-on | Product Try on | a76e85ec-20b4-4fbc-99ad-055423a868a2 |
| Video generation | Eyewear Shoot (Multi-Shot 21s Video) | 1afc70fd-cb66-4f44-847d-bdaf7e237be4 |
| Video generation | Performance Marketing Video (V3) Sample | ec9b3525-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
- 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:
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:
- pin the
appId values you support instead of relying on search at runtime
- re-fetch app metadata when you deploy changes to a workflow or form
- validate inputs against the latest parameter schema before execution
- prefer webhooks for long-running image and video jobs
- 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.