Skip to main content
POST
/
v1
/
apps
/
{appId}
/
runs
Run App
curl --request POST \
  --url https://app.uselamina.ai/v1/apps/{appId}/runs \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "inputs": {
    "Upload": "https://example.com/my-photo.jpg",
    "Style": "Disney / Pixar",
    "Aspect Ratio": "1:1"
  }
}
'
{
  "data": {
    "runId": "fc32ae7d-6840-4be3-8fb1-539a60e33fc3",
    "workflowId": "80d4d454-8844-489f-b903-2ad65a414482",
    "workflowName": "test sync",
    "status": "queued",
    "webhookUrl": "https://your-server.com/lamina-callback",
    "outputs": [
      {
        "id": "aiDesignerNode-1773051929782-5yzqjkwpm",
        "label": "AI Designer",
        "type": "pending",
        "value": null,
        "status": "pending",
        "error": null
      },
      {
        "id": "aiDesignerNode-1773132653203-v9hn959pe",
        "label": "AI Designer",
        "type": "pending",
        "value": null,
        "status": "pending",
        "error": null
      }
    ]
  }
}

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.

Start an execution of a specific app. You choose the app and provide exact inputs. For automatic app selection, use POST /v1/content/create instead. Key each field in inputs by parameter name from GET /v1/apps/{appId}.

Getting results

MethodBest for
WaitGET /v1/runs/{id}/waitAgents. Blocks until done, no polling loop.
Webhook — pass ?webhook=<url>Production. Results POST to your URL on completion.
SSEGET /v1/runs/{id}/streamReal-time UIs. Server-Sent Events with per-node progress.
PollGET /v1/runs/{id} every 3-5sFallback when none of the above fit.

Authorizations

x-api-key
string
header
required

Workspace API key. Prefix: lma_. Example: lma_abc123...

Path Parameters

appId
string<uuid>
required

The app ID (UUID) from the List Apps response

Query Parameters

webhook
string<uri>

URL to receive execution results when complete. We POST the same payload as the polling endpoint, signed with ED25519. Must be https or http.

Body

application/json
inputs
object
required

Parameter values keyed by parameter name (from the Get App response). Keys are case-sensitive and must match exactly.

Example:
{
"Upload": "https://example.com/my-photo.jpg",
"Style": "Disney / Pixar",
"Aspect Ratio": "1:1"
}

Response

Run started. Poll GET /v1/runs/{runId} or stream via SSE for results.

data
object

Returned when execution starts. All output values are null initially.