---
title: "Create an app."
method: POST
path: "/app"
tags: ["apps"]
---

# Create an app.

`POST /app`

Create a new app for the team with the provided name.
The app will be available for further configuration and channel management.

Required RBAC Policy: kots/app/create

## Request body

- object
  - `name` string, required — Name of the app that is to be created.

## Response `201`

GetAppResponse represents an app.

- object
  - `app` AppWithChannels
    - `channels` Channel[]
      - `adoptionRate` CustomerAdoption[]
        - `channelId` string
        - `count` integer
        - `percent` number, double
        - `releaseSequence` integer
        - `semver` string
        - `totalOnChannel` integer
      - `airgapDiffBundlesEnabled` boolean
      - `airgapDockerRegistryFormatEnabled` boolean
      - `appId` string
      - `appName` string
      - `appSlug` string
      - `buildAirgapAutomatically` boolean
      - `channelIcon` string
      - `channelSequence` integer
      - `channelSlug` string
      - `chartReleases` HelmChart[] — ChartReleases is a map of chart name -> []string of version labels
        - `error` string
        - `hasPreflightSpec` boolean
        - `name` string
        - `version` string
        - `weight` integer
      - `created` string, date-time
      - `currentVersion` string
      - `customHostnameOverrides` CustomHostnameOverrides
        - `downloadPortal` CustomHostnameOverride
          - `hostname` string
        - `proxy` CustomHostnameOverride
          - `hostname` string
        - `registry` CustomHostnameOverride
          - `hostname` string
        - `replicatedApp` CustomHostnameOverride
          - `hostname` string
      - `customers` TotalActiveInactiveCustomers
        - `activeCustomers` integer
        - `inactiveCustomers` integer
        - `totalCustomers` integer
      - `description` string
      - `embeddedClusterInstallCommand` string
      - `enterprisePartnerChannelID` string
      - `existingClusterInstallCommand` string
      - `extraLintRules` ExtraLintRules[]
      - `gitHubRef` GitHubRef
      - `hasKurlInstaller` boolean — swager:ignore
      - `id` string
      - `isArchived` boolean
      - `isDefault` boolean
      - `isHelmOnly` boolean
      - `latestChannelSequence` integer
      - `name` string
      - `numActiveInstances` integer
      - `numReleases` integer
      - `releaseNotes` string
      - `releaseSequence` integer
      - `releases` KotsChannelRelease[]
        - `airgapBuildError` string
        - `airgapBuildStatus` string
        - `airgapBundleImages` string[]
        - `channelIcon` string
        - `channelId` string
        - `channelName` string
        - `channelSequence` integer
        - `created` string, date-time
        - `createdBy` Actor
          - `description` string
          - `id` string
          - `link` string
          - `timestamp` string, date-time
          - `type` string
        - `customResourceError` string
        - `customResourceWarnings` string[]
        - `demotedAt` string, date-time
        - `embeddedClusterVersion` string
        - `hasECInstaller` boolean
        - `hasKurlInstaller` boolean
        - `imageSecurityInfo` ImageVulnCounts[]
          - `counts` VulnCounts
            - `critical` integer
            - `high` integer
            - `low` integer
            - `medium` integer
            - `total` integer
          - `digest` string
          - `digest_first_seen_at` string
          - `image_size_bytes` integer
          - `input` string
          - `installation_phase` string — InstallationPhase indicates the Embedded Cluster phase for the image ("", "online", or "airgap"). Application images have the phase "". Infrastructure images used for Embedded Cluster in both online and airgap have the phase "online" or "airgap". Infrastructure images used for Embedded Cluster only in airgap have the phase "airgap".
          - `last_scanned_at` string
          - `not_found` boolean
        - `imageSecuritySums` object
        - `installationTypes` InstallationTypes
          - `embeddedCluster` InstallerTypeEmbeddedCluster
            - `proxyRegistryDomain` string
            - `replicatedAppDomain` string
            - `replicatedRegistryDomain` string
            - `version` string
          - `helm` InstallerTypeHelm
          - `kots` InstallerTypeKots
            - `minKotsVersion` string
            - `targetKotsVersion` string
          - `kotsConfig` InstallerTypeKotsConfig
            - `apiVersion` string
          - `kurl` InstallationTypeKurl
            - `installerVersion` string
          - `preflight` InstallerTypePreflight
            - `apiVersion` string
          - `replicatedSDK` InstallerTypeReplicatedSDK
            - `sdkVersion` string
          - `supportBundle` InstallerTypeSupportBundle
            - `apiVersion` string
        - `isDemoted` boolean
        - `isRequired` boolean
        - `kurlInstallerID` string
        - `lintResult` LintResult
          - `isLintingComplete` boolean
          - `lintExpressions` LintExpression[]
            - `message` string
            - `path` string
            - `rule` string
            - `type` string
        - `proxyRegistryDomain` string
        - `registrySecret` string
        - `releaseNotes` string
        - `releasedAt` string, date-time
        - `replicatedRegistryDomain` string
        - `semver` string
        - `sequence` integer
        - `updated` string, date-time
        - `updatedBy` Actor
          - `description` string
          - `id` string
          - `link` string
          - `timestamp` string, date-time
          - `type` string
      - `replicatedRegistryDomain` string
      - `semverRequired` boolean
      - `semverWarning` string
      - `targetKotsVersion` string
      - `updated` string, date-time
    - `created` string, date-time
    - `defaultFromEmail` string
    - `description` string
    - `emailVerifiedAt` string, date-time
    - `iconUrl` string
    - `id` string
    - `isArchived` boolean
    - `isKotsApp` boolean
    - `name` string
    - `publicKeyPem` string
    - `renamedAt` string, date-time
    - `securityCenterEnabled` boolean
    - `slug` string
    - `teamId` string
    - `trialSignupEnabled` boolean

## Other responses

- `400` — Returned on bad input
- `401` — Return if the caller is not authorized
- `403` — Returned if the caller does not have the needed permission

---

[API](https://skmtc.net/replicated/apis/vendor-api-v3.md) · [All operations](https://skmtc.net/replicated/apis/vendor-api-v3/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/replicated/vendor-api-v3/revisions/6fcf9e54aba4/schema)
