> ## 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.

# Get App Workflow

> Returns the underlying workflow graph for an app -- the processing nodes and
the edges (connections) between them. Useful for understanding how an app
transforms inputs into outputs.

Each node represents a processing step (e.g. image generation, video creation, upscaling).
Edges show the data flow between nodes.


Inspect the DAG (nodes and edges) behind an app. Each node is a processing step — image generation, video creation, compositing, upscaling — and edges show the data flow between them.

Useful for agents that need to reason about what an app does before running it, or for building tooling that classifies apps by pipeline structure.


## OpenAPI

````yaml GET /v1/apps/{appId}/workflow
openapi: 3.1.0
info:
  title: Lamina Apps API
  version: 1.0.0
  description: >
    Professional creative content production for AI agents. Create brand-aligned
    images, videos, and designs from natural-language briefs using 30+
    specialized AI pipelines.


    Unlike raw model APIs (DALL-E, Flux, Kling), Lamina automatically applies
    brand guidelines, selects the optimal multi-model pipeline, scores output
    quality, and delivers permanent CDN-hosted URLs with composability metadata
    for chaining.


    ## Authentication

    All endpoints require an API key passed via one of these headers:

    - `x-api-key: lma_your_key` (recommended)

    - `Authorization: Bearer lma_your_key`


    API keys are workspace-scoped. Create them in **Settings -> API Keys**.


    ## Quick Start (One-Call Path)

    `POST /v1/create` with `{ "brief": "product photo of sneakers", "sync": true
    }` — returns completed output inline with CDN URL.


    ## Quick Start (Advanced)

    1. `GET /v1/apps` -- browse 30+ specialized creative apps

    2. `GET /v1/apps/{appId}` -- inspect input parameters

    3. `POST /v1/apps/{appId}/runs?webhook=<url>` -- run with your inputs

    4. Receive results via webhook, poll `GET /v1/runs/{runId}`, or stream via
    `GET /v1/runs/{runId}/stream`


    ## Rate Limits

    All `/v1/*` endpoints are currently limited to 100 requests per minute per
    IP.

    On `429`, read the `RateLimit-*` and `Retry-After` headers before retrying.


    ## How Inputs Work

    When running an app, provide inputs as a JSON object keyed by parameter
    **name** (from the app details response).


    - **text** parameters: send a string value (e.g. a prompt or description)

    - **options** parameters: send the **label** of the option (e.g.
    `"Caucasian"`), not an internal value

    - **url** parameters: send a publicly accessible URL to an image or video


    Every parameter is returned with `required: true`. Parameters with a
    `default` can safely be omitted -- the app will use the default value.


    ## Endpoint Groups

    | Group | Purpose |

    |-------|---------|

    | **Apps** | Discover and inspect available content creation apps |

    | **Runs** | Run workflows, track progress, and retrieve results |

    | **Assets** | Browse generated images, videos, and text from past
    executions |

    | **Intelligence** | Brand context, performance prediction, recommendations,
    and trends |

    | **Publishing** | Publish content to connected social channels |

    | **Content** | One-call agent operations: create, score, brief, batch |

    | **Account** | Credit balance and rate limit visibility |

    | **Templates** | Content creation templates and strategies |

    | **Webhooks** | Webhook signature verification |
servers:
  - url: https://app.uselamina.ai
    description: Production
security:
  - apiKey: []
tags:
  - name: Create
    description: Create content from briefs, run specific apps, and use templates
  - name: Discover
    description: Find and inspect available apps and their input schemas
  - name: Track
    description: Monitor execution progress, retrieve results, and browse generated assets
  - name: Intelligence
    description: >-
      Brand context, performance prediction, content recommendations, and trend
      signals
  - name: Distribute
    description: Publish content to social channels and transfer assets to CDN
  - name: Score
    description: Evaluate content quality, brand alignment, and engagement potential
  - name: Account
    description: Credit balance, rate limits, and health checks
  - name: Webhooks
    description: Webhook signature verification for secure callback handling
paths:
  /v1/apps/{appId}/workflow:
    get:
      tags:
        - Discover
      summary: Get App Workflow
      description: >
        Returns the underlying workflow graph for an app -- the processing nodes
        and

        the edges (connections) between them. Useful for understanding how an
        app

        transforms inputs into outputs.


        Each node represents a processing step (e.g. image generation, video
        creation, upscaling).

        Edges show the data flow between nodes.
      operationId: getAppWorkflow
      parameters:
        - $ref: '#/components/parameters/appId'
      responses:
        '200':
          description: Workflow structure with nodes and edges
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/WorkflowStructure'
              example:
                data:
                  appId: 80d4d454-8844-489f-b903-2ad65a414482
                  name: test sync
                  nodes:
                    - id: aiDesignerNode-1773051929782-5yzqjkwpm
                      type: aiDesignerNode
                      label: aiDesignerNode
                    - id: aiDesignerNode-1773132653203-v9hn959pe
                      type: aiDesignerNode
                      label: aiDesignerNode
                    - id: klingVideoNode-1773149496212-nm2mjjfxi
                      type: klingVideoNode
                      label: klingVideoNode
                  edges:
                    - source: aiDesignerNode-1773051929782-5yzqjkwpm
                      target: aiDesignerNode-1773132653203-v9hn959pe
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  parameters:
    appId:
      name: appId
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: The app ID (UUID) from the List Apps response
  schemas:
    WorkflowStructure:
      type: object
      description: The workflow graph showing processing nodes and their connections
      required:
        - appId
        - name
        - nodes
        - edges
      properties:
        appId:
          type: string
          format: uuid
          description: The app ID
        name:
          type: string
          description: Name of the app
        nodes:
          type: array
          description: Processing steps in the workflow
          items:
            type: object
            required:
              - id
              - type
              - label
            properties:
              id:
                type: string
                description: >-
                  Unique node identifier (matches output `id` in execution
                  results)
              type:
                type: string
                description: >
                  Node type indicating what processing it performs. Common
                  types:

                  - `aiDesignerNode` -- AI image generation

                  - `klingVideoNode` -- Video generation

                  - `imageCompositorNode` -- Image compositing/editing

                  - `textGeneratorNode` -- Text/copy generation

                  - `upscalerNode` -- Image upscaling
              label:
                type: string
                description: Human-readable name for the node
        edges:
          type: array
          description: |
            Connections between nodes showing data flow direction.
            `source` node output feeds into `target` node input.
          items:
            type: object
            required:
              - source
              - target
            properties:
              source:
                type: string
                description: Source node ID (output producer)
              target:
                type: string
                description: Target node ID (input consumer)
  responses:
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
          example:
            error: Invalid API key
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
          example:
            error: App not found
    TooManyRequests:
      description: >-
        Rate limit exceeded. All `/v1/*` endpoints are currently limited to 100
        requests per minute per IP.
      headers:
        RateLimit-Policy:
          description: Active rate limit policy.
          schema:
            type: string
            example: 100;w=60
        RateLimit-Limit:
          description: Max requests allowed in the current window.
          schema:
            type: integer
            example: 100
        RateLimit-Remaining:
          description: Requests remaining in the current window.
          schema:
            type: integer
            example: 0
        RateLimit-Reset:
          description: Seconds until the current window resets.
          schema:
            type: integer
            example: 60
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
            example: 60
      content:
        text/plain:
          schema:
            type: string
          example: Too many requests from this IP, please try again in a minute
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: 'Workspace API key. Prefix: `lma_`. Example: `lma_abc123...`'

````