---
title: "List releases for an app channel."
method: GET
path: "/app/{app_id}/channel/{channel_id}/releases"
tags: ["channelReleases"]
---

# List releases for an app channel.

`GET /app/{app_id}/channel/{channel_id}/releases`

## Request

- Base URL: `https://api.replicated.com/vendor/v3`
- URL: `https://api.replicated.com/vendor/v3/app/{app_id}/channel/{channel_id}/releases`
- Auth: API key in header `Authorization`

Return a paginated list of releases for a specific channel within an app, including release metadata and status.

Required RBAC Policy: kots/app/[:appid]/channel/[:channelid]/releases/read

## Path parameters

- `app_id` string, required
- `channel_id` string, required

## Query parameters

- `pageSize` integer
- `currentPage` integer
- `sortColumn` string
- `sortDesc` boolean
- `excludeDemoted` boolean
- `includeSecuritySummary` boolean
- `versionLabel` string
- `includeInstallerImages` 'online' | 'airgap'

## Response `200`

ListChannelReleasesResponse contains the JSON channel releases list

- object
  - `matchedCount` 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
    - `fullAirgapBuild` boolean: FullAirgapBuild is true when the channel is set to produce a full (installable) airgap bundle or one already exists: auto-build is enabled (or a build was forced), or a checksum/built/warn status is present. A failed or still-building auto-build is still true. It lets the client annotate the version selector identically to the Enterprise Portal.
    - `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
      - `fixed_counts` VulnCounts
        - `critical` integer
        - `high` integer
        - `low` integer
        - `medium` integer
        - `total` integer
      - `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
      - `sbom_status` string: SBOM status tracking
      - `sbom_status_message` string
      - `sbom_status_updated_at` string
      - `scan_status` string: Scan status tracking
      - `scan_status_message` string
      - `scan_status_updated_at` string
      - `scanned_images` integer: Scan completeness tracking
      - `total_images` integer
    - `imageSecuritySums` object
    - `installationTypes` InstallationTypes
      - `embeddedCluster` InstallerTypeEmbeddedCluster
        - `proxyRegistryDomain` string
        - `replicatedAppDomain` string
        - `replicatedRegistryDomain` string
        - `version` string
      - `helm` InstallerTypeHelm
      - `helmInstallabilityIssue` HelmInstallabilityIssue
        - `message` string
        - `resources` HelmUnavailableResource[]
          - `filePath` string
          - `identifier` string
          - `kind` string
          - `name` string
      - `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
      - `lintError` string
      - `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

## 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
- `404`: Returned on resource not found

## Changes

- **2026-11-03** `a36c6aead22f`: 26 info
  - added the new optional `query` request parameter `includeInstallerImages`
  - added the new optional `query` request parameter `sortColumn`
  - added the new optional `query` request parameter `sortDesc`
  - added the new optional `query` request parameter `versionLabel`
  - …22 more

[Operation history](https://skmtc.dev/replicated/apis/vendor-api-v3-2/changes/app/:app_id/channel/:channel_id/releases/get.md)

---

[API](https://skmtc.dev/replicated/apis/vendor-api-v3-2.md) - [All operations](https://skmtc.dev/replicated/apis/vendor-api-v3-2/llms.txt) - [OpenAPI document](https://skmtc.dev/replicated/apis/vendor-api-v3-2/revisions/a36c6aead22f?raw)
