---
title: "Discover apps by intent"
method: POST
path: "/apps/discover"
tags: ["Apps"]
---

# Discover apps by intent

`POST /apps/discover`

## Request

- Base URL: `https://app.uselamina.ai/v1`
- URL: `https://app.uselamina.ai/v1/apps/discover`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Hybrid discovery: describe what you want to create and get ranked app matches from lexical metadata, workflow capabilities, and semantic retrieval.

## Request body

- object
  - `intent` string, required: Describe what you want to create
  - `constraints` object
    - `maxCredits` number: Maximum credit budget
    - `outputFormat` string: Required output MIME type
  - `limit` integer: Max results to return

## Response `200`

Ranked app matches

- object
  - `data` object, required
    - `matches` object[], required
      - `appId` string, uuid, required
      - `name` string, required
      - `description` string, nullable
      - `relevanceScore` number, required
      - `capabilities` AppCapabilities, required: Semantic capabilities derived from workflow composition — helps agents understand what this app does and produces.
        - `produces` string[], required: What this app produces (e.g. "photo", "video-clip", "voiceover")
        - `strengths` string[], required: What this app is good at
        - `bestFor` string[], required: Best use cases for this app
        - `limitations` string[], required: Known limitations
        - `outputFormats` string[], required: Output MIME types (e.g. "image/png", "video/mp4")
        - `hasQualityControl` boolean, required: Whether the workflow includes automated quality control
        - `hasHumanApproval` boolean, required: Whether the workflow requires human approval
        - `generationStepCount` integer, required: Number of AI generation steps
        - `nodeTypes` string[], required: Node types used in the workflow
      - `formats` string[], required
      - `platforms` string[], required
      - `matchReasons` AppDiscoveryMatchReason[], required
        - `source` 'name' | 'description' | 'frontmatter' | 'capability' | 'semantic', required
        - `field` string
        - `terms` string[]
        - `explanation` string, required
      - `matchedTerms` string[], required
      - `estimatedCredits` number, nullable
      - `whyMatch` string, required
    - `intent` object, required
      - `medium` string
      - `summary` string

## Other responses

- `401`: Missing or invalid API key
- `500`: Internal server error

---

[API](https://skmtc.dev/uselamina/apis/lamina-v1-api.md) · [All operations](https://skmtc.dev/uselamina/apis/lamina-v1-api/llms.txt) · [OpenAPI document](https://skmtc.dev/uselamina/apis/lamina-v1-api/revisions/73b598526531?raw)
