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

> Returns app metadata and the full list of input parameters the app accepts.
Use this to understand what inputs you need to provide when running the app.

Each parameter has a `type` that determines what value to send:
- **text**: A free-form string (prompts, descriptions, product names)
- **options**: Pick one label from the `options` array (e.g. `"Caucasian"`, `"Male"`, `"Studio"`)
- **url**: A publicly accessible URL pointing to an image or video

Use the parameter `name` as the key when providing `inputs` to the Run App endpoint.


Inspect an app's input schema before running it. The `parameters` array is the source of truth for:

* which parameters have a `default` (safe to omit) and which must be supplied
* which values are valid for `options` type parameters
* which fields expect public URLs
* which parameter `key` (or `name`) values to use as keys in the `inputs` object — prefer `key`, the stable snake\_case identifier

Always call this before `POST /v1/apps/{appId}/runs` — never guess parameter names or option values.


## OpenAPI

````yaml GET /v1/apps/{appId}
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}:
    get:
      tags:
        - Discover
      summary: Get App Details
      description: >
        Returns app metadata and the full list of input parameters the app
        accepts.

        Use this to understand what inputs you need to provide when running the
        app.


        Each parameter has a `type` that determines what value to send:

        - **text**: A free-form string (prompts, descriptions, product names)

        - **options**: Pick one label from the `options` array (e.g.
        `"Caucasian"`, `"Male"`, `"Studio"`)

        - **url**: A publicly accessible URL pointing to an image or video


        Use the parameter `name` as the key when providing `inputs` to the Run
        App endpoint.
      operationId: getApp
      parameters:
        - $ref: '#/components/parameters/appId'
      responses:
        '200':
          description: App details with full parameter definitions
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AppDetail'
              example:
                data:
                  appId: 3f68debe-df0a-4fc9-bdd3-9d45a4160587
                  name: Cartoonify!
                  description: >-
                    Just upload your photo and convert it into an Cartoon of
                    your favorite style!
                  parameters:
                    - id: 4a45d4c6-808e-45e8-9f7c-6a06953583fb
                      name: Upload
                      type: url
                      required: true
                      accept:
                        - image
                      default: >-
                        https://media.getmason.io/api/assetlib/55e99714-d15d-43fe-9e9b-ead418b7ba67.png
                    - id: 1977e11b-d91b-4f65-802c-b37b597fa8d9
                      name: Style
                      type: options
                      required: true
                      options:
                        - Ghibli
                        - Simpsons
                        - Disney / Pixar
                        - Cyberpunk
                    - id: 5c237908-e6ed-4d4b-bd1d-6253bf60a8a5
                      name: Aspect Ratio
                      type: options
                      required: true
                      options:
                        - '1:1'
                        - '4:3'
                        - '3:4'
                        - '16:9'
                        - '9:16'
                      default: '1:1'
        '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:
    AppDetail:
      type: object
      description: Full app details including input parameters
      required:
        - appId
        - name
        - parameters
      properties:
        appId:
          type: string
          format: uuid
          description: Unique app identifier
        name:
          type: string
          description: Display name of the app
        description:
          type: string
          nullable: true
          description: Short description of what the app does
        parameters:
          type: array
          description: >-
            List of input parameters the app accepts. Use these when calling Run
            App.
          items:
            $ref: '#/components/schemas/Parameter'
        capabilities:
          $ref: '#/components/schemas/AppCapabilities'
          nullable: true
          description: Semantic capabilities derived from workflow composition.
    Parameter:
      type: object
      description: |
        An input parameter for the app. Use the `name` field as the key
        when providing values in the `inputs` object of the Run App request.
      required:
        - id
        - name
        - type
        - required
      properties:
        id:
          type: string
          description: >-
            Unique parameter identifier (UUID). Can also be used as key in
            `inputs`, though `name` is the recommended public key.
        name:
          type: string
          description: >
            Human-readable parameter name. **Use this as the key** in the
            `inputs` object

            when running the app. Case-sensitive.
        type:
          type: string
          enum:
            - text
            - options
            - url
          description: |
            Determines what kind of value to send:
            - `text` -- a free-form string (prompts, descriptions, product data)
            - `options` -- one of the values from the `options` array
            - `url` -- a publicly accessible URL to an image or video
        required:
          type: boolean
          description: >-
            Whether this parameter must be provided. If false, the app uses the
            default value.
        description:
          type: string
          description: Explanation of what this parameter is for
        options:
          type: array
          items:
            type: string
          description: |
            Available choices (only present for `options` type).
            Send one of these exact strings as the value.
        default:
          description: |
            Default value used when the parameter is not provided.
            Can be a string, number, or object depending on the parameter.
        accept:
          type: array
          items:
            type: string
            enum:
              - image
              - video
          description: Accepted file types (only for `url` type)
        multiple:
          type: boolean
          description: >-
            If true, accepts an array of URLs instead of a single URL (only for
            `url` type)
    AppCapabilities:
      type: object
      description: >
        Semantic capabilities derived from a workflow's node composition. Helps
        agents

        understand what an app does and produces, rather than just what
        parameters it accepts.
      required:
        - produces
        - strengths
        - bestFor
        - limitations
        - outputFormats
        - hasQualityControl
        - hasHumanApproval
        - generationStepCount
        - nodeTypes
      properties:
        produces:
          type: array
          items:
            type: string
          description: What this app produces (e.g. "photo", "video-clip", "voiceover")
        strengths:
          type: array
          items:
            type: string
          description: >-
            What this app is good at (e.g. "AI image generation", "background
            removal")
        bestFor:
          type: array
          items:
            type: string
          description: >-
            Best use cases for this app (e.g. "e-commerce product photography",
            "social media content pipeline")
        limitations:
          type: array
          items:
            type: string
          description: Known limitations of this app
        outputFormats:
          type: array
          items:
            type: string
          description: Output MIME types (e.g. "image/png", "video/mp4")
        hasQualityControl:
          type: boolean
          description: Whether the workflow includes automated quality control
        hasHumanApproval:
          type: boolean
          description: Whether the workflow requires human approval (not fully automated)
        generationStepCount:
          type: integer
          description: Number of AI generation steps in the workflow
        nodeTypes:
          type: array
          items:
            type: string
          description: Node types used in the workflow
  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...`'

````