---
title: "Promote App Build"
method: POST
path: "/app_builds/{id}/promote"
tags: ["App Builds"]
---

# Promote App Build

`POST /app_builds/{id}/promote`

Promotes a draft or approved app build to production so it becomes the active version served to users. Draft builds enter review first.

## Headers

- `Idempotency-Key` string

## Response `200`

app build promotion started

- AppBuild
  - `checksum` string, required — Client-generated checksum of the build file, used to verify file integrity.
  - `created_at` string, required — When the build was uploaded, as an ISO 8601 timestamp.
  - `file_url` string, nullable, required — URL to download the uploaded build artifact.
  - `id` string, required — App build ID, prefixed `abld_`.
  - `is_production` boolean, required — Whether this build is the currently active production build for its platform.
  - `platform` 'ios' | 'android' | 'web', required — The target platform for this build.
  - `review_message` string, nullable, required — Feedback from the reviewer explaining a rejection, or `null` if the build has not been reviewed or was approved.
  - `source_url` string, nullable, required — URL to download the compressed source code archive that produced this build, or `null` when the build was uploaded without a source archive.
  - `status` 'draft' | 'pending' | 'approved' | 'rejected', required — The build's review status.
  - `supported_app_view_types` string[], required

## Other responses

- `400` — Invalid Parameters
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Resource not found
- `409` — Conflict

## Changes

- **2026-08-12** `ae20b30817de` — 1 info
  - added the non-success response with the status `409`
- **2026-08-07** `f1020c3ecda4` — 4 info
  - added the optional property `error/code` to the response with the `400` status
  - added the optional property `error/code` to the response with the `401` status
  - added the optional property `error/code` to the response with the `403` status
  - added the optional property `error/code` to the response with the `404` status
- **2026-07-31** `099fdc3be422` — 7 warning
  - added the new `analytics` enum value to the `supported_app_view_types/items/` response property for the response status `200`
  - added the new `dash` enum value to the `supported_app_view_types/items/` response property for the response status `200`
  - added the new `dashboard` enum value to the `supported_app_view_types/items/` response property for the response status `200`
  - added the new `discover` enum value to the `supported_app_view_types/items/` response property for the response status `200`
  - …3 more
- **2026-07-26** `60bbb4a6ffbc` — 2 breaking, 9 warning, 15 info
  - the response property `file_url` became nullable for the status `200`
  - the `created_at` response's property type/format changed from `string`/`date-time` to `string`/`` for status `200`
  - deleted the `path` request parameter `id`
  - removed the optional property `error/code` from the response with the `400` status
  - …22 more

[Change history](https://skmtc.dev/whop/apis/whop-api/changes/app_builds/:id/promote/post.md)

---

[API](https://skmtc.dev/whop/apis/whop-api.md) · [All operations](https://skmtc.dev/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/whop/whop-api/revisions/4ddae15b5de8/schema)
