---
title: "Get the details of a Runway release step"
method: GET
path: "/app/{appId}/release/{releaseId}/step/{stepId}"
tags: ["release"]
---

# Get the details of a Runway release step

`GET /app/{appId}/release/{releaseId}/step/{stepId}`

## Request

- Base URL: `https://api.runway.team`
- URL: `https://api.runway.team/app/{appId}/release/{releaseId}/step/{stepId}`
- Auth: API key in header `X-API-Key`

Returns the details for a release step, including a `data` field whose shape depends on the step archetype:
- `releaseCandidate`: RC build info (status, integration IDs).
- `approvals`: metadata/screenshots approval state via `approvalItems`.
- `takeoff`: info about store release — `submittedAt`, `startedReviewAt`, `approvedAt`, `markedRejectedAt`, `releasedAt`, plus the precomputed `waitingForReviewSeconds` (queued before review started) and `timeInReviewSeconds` (under review).
- `regressionTesting`: `regressionItems` and `testRuns` from the connected regression integration.
- `featureReadiness`: work items tracked for the release, including project management ticket info and pull request / code review (PR / CR) info.
- `rollout`: `releaseAdoptionRate`, `phasedRelease` (rollout percentage via `userFraction`, `state`, `dayNumber`, `startDate`), `appStoreReviewData` (average rating, total ratings count, surfaced user review issues), and `monitoringStatistics` (crash-free users, crash-free sessions, custom metrics — each with `currentValue`, `delta`, `previousValue`, `monitoringMetricStatus`).
- Other archetypes: `data` may be null.

For apps on Flightpaths, `stepId` resolves to the release's step with that archetype. If the release has more than one step with that archetype (e.g. one per destination), the request fails with the matching step config IDs; use `GET /app/{appId}/stepConfig/{stepConfigId}/release/{releaseId}/stepRun` instead.

## Path parameters

- `releaseId` string, required
- `appId` string, required
- `stepId` string, required

## Response `200`

A release step response

- ReleaseStepEntity
  - `stepId` unknown
  - `type` 'kickoff' | 'featureReadiness' | 'releaseCandidate' | 'regressionTesting' | 'betaTesting' | 'metadata' | 'screenshots' | 'approvals' | 'submission' | 'storeReview' | 'takeoff' | 'ciDistribution', required: The type of release step
  - `displayName` string, required: The display name of the step
  - `status` 'ready' | 'pending' | 'pendingChecklist' | 'blocked' | 'inactive', required: The status of a release step
  - `statusReasonString` string, required: The user-friendly description of the reason for the status of the step
  - `data` union
    - object
      - `approvalItems` ChecklistItemEntity[], required: The list of approval items for the release step. This object is only returned for release steps of type `approval`
        - `id` string, required: The identifier of the checklist item
        - `title` string, required: The title of the checklist item
        - `description` string: The description of the checklist item. Accepts markdown.
        - `approverGroups` UserGroup[], required: The list of user groups that can approve this checklist item. Custom groups can be included as well.
        - `releaseType` 'all' | 'hotfixOnly' | 'rollbackOnly' | 'allExceptHotfix', required: The type of release this checklist item will appear on
        - `notifyEnabled` boolean, required: Whether the checklist item will notify on Slack when its status changes
        - `statuses` ChecklistItemStatusType[], required: The list of possible checklist item status types for this checklist item. A subset of all possible ChecklistItemStatusType values
        - `releaseStepType` string: The release step that the checklist item appears on. Will be `null` if the placement of the item is not `binary`. Can either be of type ReleaseStepType, or a step's Step ID can be sent instead
        - `stepId` unknown
        - `oneOffForVersion` string: If the checklist item only applies for a single release version, this field will contain the version string for that version
        - `status` ChecklistItemStatus: The status of a checklist item
          - `status` 'approved' | 'rejected' | 'inProgress' | 'blocked' | 'passed' | 'failed', required: All possible statuses for a checklist item
          - `createdBy` string, required: The userId (email) of the user that created the checklist item
          - `createdAt` string, date-time, required: The date and time the checklist item was created
        - `placement` 'stepChecklist' | 'approvals' | 'regressionTesting', required: The placement of a given checklist item
        - `comment` ChecklistItemComment: A comment on a checklist item
          - `createdAt` string, date-time
          - `createdBy` string: The user id (email) of the user that added the comment
          - `comment` string: The comment string. Can be markdown.
    - object
      - `regressionItems` ChecklistItemEntity[], required: The list of regression items for the release step. This object is only returned for release steps of type `regressionTesting`
        - `id` string, required: The identifier of the checklist item
        - `title` string, required: The title of the checklist item
        - `description` string: The description of the checklist item. Accepts markdown.
        - `approverGroups` UserGroup[], required: The list of user groups that can approve this checklist item. Custom groups can be included as well.
        - `releaseType` 'all' | 'hotfixOnly' | 'rollbackOnly' | 'allExceptHotfix', required: The type of release this checklist item will appear on
        - `notifyEnabled` boolean, required: Whether the checklist item will notify on Slack when its status changes
        - `statuses` ChecklistItemStatusType[], required: The list of possible checklist item status types for this checklist item. A subset of all possible ChecklistItemStatusType values
        - `releaseStepType` string: The release step that the checklist item appears on. Will be `null` if the placement of the item is not `binary`. Can either be of type ReleaseStepType, or a step's Step ID can be sent instead
        - `stepId` unknown
        - `oneOffForVersion` string: If the checklist item only applies for a single release version, this field will contain the version string for that version
        - `status` ChecklistItemStatus: The status of a checklist item
          - `status` 'approved' | 'rejected' | 'inProgress' | 'blocked' | 'passed' | 'failed', required: All possible statuses for a checklist item
          - `createdBy` string, required: The userId (email) of the user that created the checklist item
          - `createdAt` string, date-time, required: The date and time the checklist item was created
        - `placement` 'stepChecklist' | 'approvals' | 'regressionTesting', required: The placement of a given checklist item
        - `comment` ChecklistItemComment: A comment on a checklist item
          - `createdAt` string, date-time
          - `createdBy` string: The user id (email) of the user that added the comment
          - `comment` string: The comment string. Can be markdown.
      - `testRuns` RegressionTestingTestRunEntity[], required: The list of regression testing test runs from the connected integration associated with this release step. This object is only returned for release steps of type `regressionTesting`.
        - `id` string, required: The id of the test run.
        - `name` string, required: The name of the test run.
        - `description` string, required: The description of the test run.
        - `statuses` RegressionTestingTestRunStatusEntity[], required: Per-status breakdown of the test cases in the test run.
          - `displayableName` string, required: The human-readable name of the status (e.g. `Passed`, `Failed`, `Blocked`).
          - `testCasesCount` integer, required: The number of test cases in this status.
          - `progressFraction` number, float, required: The fraction (0.0 - 1.0) of test cases in the test run that are in this status.
        - `completedAt` string, date-time, nullable, required: The date and time when the test run was completed. Null if the test run is still in progress.
        - `completionFraction` number, float, required: The fraction (0.0 - 1.0) of test cases in the test run that have been completed.
        - `externalUrl` string, required: The URL to the test run in the external test management integration.
        - `createdAt` string, date-time, required: The date and time when the test run was created.
        - `updatedAt` string, date-time, nullable, required: The date and time when the test run was last updated.
    - object
      - `items` FeatureReadinessItemEntity[], required: The list of Feature Readiness work items for the release. This object is only returned for release steps of type `featureReadiness`.
        - `id` string: The unique identifier for the item. Pass this value as `frItemId` when calling the ignore/un-ignore endpoint.
        - `ticket` object, nullable: The ticket associated with this item, if any.
          - `identifier` string
          - `description` string
          - `url` string
          - `owner` string, nullable
          - `reporter` string, nullable
          - `status` string
          - `isTicketDone` boolean
          - `priority` string, nullable
          - `ticketType` string, nullable
        - `code` union: The code associated with this item: either a pull request (PR / code review) or a commit (or null if none). This is the canonical location of pull request / code review information on a release — query the `featureReadiness` step to retrieve PR data.
          - WorkItemCodePullRequest
            - `identifier` string, required: The identifier of the pull request
            - `codeStatus` 'openPR' | 'merged' | 'unmerged' | 'cherryPickPending' | 'cherryPickOpen' | 'cherryPickFailed' | 'cherryPickMerged': Status of WorkItemCode entity
            - `type` 'commit' | 'pullRequest', required: Type of WorkItemCode entity
            - `url` string, required: The url of the pull request
            - `title` string, required: The title of the pull request
            - `description` string, required: The description of the pull request
            - `baseBranch` string, required: The base branch of the pull request
            - `headBranch` string, required: The head branch of the pull request
            - `author` string, required: The author of the pull request
            - `createdAt` string, date-time, required: The date and time the pull request was created
            - `updatedAt` string, date-time, required: The date and time the pull request was last updated
            - `pullRequestStatus` 'open' | 'merged' | 'closed' | 'unknown', required: Status of WorkItemCode entity
          - WorkItemCodeCommit
            - `identifier` string, required: The identifier of the commit
            - `codeStatus` 'openPR' | 'merged' | 'unmerged' | 'cherryPickPending' | 'cherryPickOpen' | 'cherryPickFailed' | 'cherryPickMerged', required: Status of WorkItemCode entity
            - `type` 'commit' | 'pullRequest', required: Type of WorkItemCode entity
            - `url` string, required: The url of the commit
            - `author` string, required: The author of the commit
            - `message` string, required: The message of the commit
            - `branch` string, required: The branch of the commit
            - `committedAt` string, date-time, required: The date and time the commit was created
            - `authoredAt` string, date-time, required: The date and time the commit was authored
        - `explanationText` string, nullable: Optional explanation for the item.
        - `ignored` boolean: Whether the item has been ignored. Ignored items no longer block the release from being considered ready.
        - `autoIgnored` boolean: Whether the item would be ignored automatically based on app settings.
        - `isItemDone` boolean: True when both the code is merged and the ticket is done.
        - `debugVariant` string: Identifies which variation of feature item this is (used to indicate the source of the work item).
    - object
      - `releasedAt` string, date-time, nullable: The date and time when the release was released to users.
      - `rolloutStartedAt` string, date-time, nullable: The date and time when the phased/staged rollout started for the release.
      - `releaseAdoptionRates` object, nullable: The current adoption rates for the release (fraction of users on this version) keyed by stability monitoring integration installation ID, if available.
      - `phasedRelease` PhasedReleaseData: Phased/staged rollout details for a release. Applicable to both Apple (phased release) and Google (staged rollout).
        - `state` string: The phased release state (e.g. Apple: ACTIVE, PAUSED, COMPLETE; Google: inProgress, halted, completed).
        - `dayNumber` integer: The current phased release day (Apple only, 1-7). 0 if not applicable.
        - `startDate` string, date-time, nullable: The date the phased/staged rollout started.
        - `userFraction` number, float: The fraction of users receiving the update (0.0 to 1.0). For Apple this is derived from the day number; for Google this is the configured staged rollout percentage.
      - `appStoreReviewData` AppStoreReviewDataEntity: Aggregated App Store reviews data for a rollout step run.
        - `averageRating` number, float, required: The average rating of the app on the App Store at the time the data was captured.
        - `totalRatingsCount` integer, required: The total number of ratings for the app on the App Store at the time the data was captured.
        - `userReviewIssues` AppStoreReviewsIssueEntity[], required: Issues surfaced from user reviews for the release.
          - `description` string, required: Human-readable description of the issue.
          - `isNewIssue` boolean, required: Whether this issue is new in the current release (i.e. not seen in prior releases).
          - `reviewExamples` AppStoreReviewEntity[], required: Example user reviews that contributed to this issue.
            - `id` string, required: The app store's identifier for the review. Stable across requests — dedupe on it.
            - `title` string, required: The review's title, empty on stores that don't have one.
            - `content` string, required: The review's body text.
            - `author` string, required: The reviewer's display name as given by the store.
            - `rating` string, required: The star rating, 1 through 5.
            - `submittedAt` string, date-time, required: When the review was submitted to the store.
            - `version` string: The app version the review was left on, when the store reports it.
            - `country` string: The storefront country the review was left in, when the store reports it.
            - `titleTranslated` string: English translation of the title, present only when review translation is enabled for the org.
            - `contentTranslated` string: English translation of the body, present only when review translation is enabled for the org.
            - `fetchedAt` string, date-time: When Runway fetched this review from the store.
            - `destination` AppStoreReviewDestinationEntity
              - …
      - `monitoringStatistics` MonitoringStatisticEntity[]: Monitoring statistics for the rollout, including crash-free rates, adoption, and custom metrics. Each entry contains the current summary value (no time series data).
        - `type` string: The metric type (e.g. 'userStability' for crash-free users, 'sessionStability' for crash-free sessions, 'adoptionRate', 'eventsPerActiveUser', etc.).
        - `integrationType` string: The integration providing this metric (e.g. 'firebase_crashlytics', 'bugsnag', 'datadog').
        - `currentValue` number, float, nullable: The current value of the metric for this release version.
        - `delta` number, float, nullable: The change in the metric value compared to the previous version.
        - `previousVersion` string, nullable: The previous release version used for comparison.
        - `previousValue` number, float, nullable: The metric value for the previous release version.
        - `monitoringMetricStatus` 'healthy' | 'unhealthy' | 'null', nullable: The health status of this metric, if a threshold is configured.
    - object: The release's submission, review and release timestamps for the Release (`takeoff`) step, plus the precomputed review durations. `startedReviewAt` is Apple-only, so both durations are null on Google Play.
      - `submittedAt` string, date-time, nullable: The date and time when the release was submitted to the app store for review.
      - `startedReviewAt` string, date-time, nullable: The date and time when the app store started reviewing the release. Not set by Google Play.
      - `approvedAt` string, date-time, nullable: The date and time when the app store approved the release.
      - `markedRejectedAt` string, date-time, nullable: The date and time when the release was marked as rejected in Runway.
      - `releasedAt` string, date-time, nullable: The date and time when the release was released to users.
      - `waitingForReviewSeconds` number, double, nullable: How long the release sat queued before the app store started reviewing it, in seconds (`startedReviewAt - submittedAt`).
      - `timeInReviewSeconds` number, double, nullable: How long the release was under app store review, in seconds (`approvedAt - startedReviewAt`).
  - `checklistItems` ChecklistItemEntity[], required: The list of checklist items for the release step
    - `id` string, required: The identifier of the checklist item
    - `title` string, required: The title of the checklist item
    - `description` string: The description of the checklist item. Accepts markdown.
    - `approverGroups` UserGroup[], required: The list of user groups that can approve this checklist item. Custom groups can be included as well.
    - `releaseType` 'all' | 'hotfixOnly' | 'rollbackOnly' | 'allExceptHotfix', required: The type of release this checklist item will appear on
    - `notifyEnabled` boolean, required: Whether the checklist item will notify on Slack when its status changes
    - `statuses` ChecklistItemStatusType[], required: The list of possible checklist item status types for this checklist item. A subset of all possible ChecklistItemStatusType values
    - `releaseStepType` string: The release step that the checklist item appears on. Will be `null` if the placement of the item is not `binary`. Can either be of type ReleaseStepType, or a step's Step ID can be sent instead
    - `stepId` unknown
    - `oneOffForVersion` string: If the checklist item only applies for a single release version, this field will contain the version string for that version
    - `status` ChecklistItemStatus: The status of a checklist item
      - `status` 'approved' | 'rejected' | 'inProgress' | 'blocked' | 'passed' | 'failed', required: All possible statuses for a checklist item
      - `createdBy` string, required: The userId (email) of the user that created the checklist item
      - `createdAt` string, date-time, required: The date and time the checklist item was created
    - `placement` 'stepChecklist' | 'approvals' | 'regressionTesting', required: The placement of a given checklist item
    - `comment` ChecklistItemComment: A comment on a checklist item
      - `createdAt` string, date-time
      - `createdBy` string: The user id (email) of the user that added the comment
      - `comment` string: The comment string. Can be markdown.

## Other responses

- `400`: Bad request response
- `404`: Resource not found response

---

[API](https://skmtc.dev/runway/apis/runway-rest-api.md) - [All operations](https://skmtc.dev/runway/apis/runway-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/runway/apis/runway-rest-api/revisions/081109863a9a?raw)
