---
title: "Promote preview to live"
method: POST
path: "/apps/{appRef}/deploys/{deployId}/promote"
tags: ["Deploys"]
---

# Promote preview to live

`POST /apps/{appRef}/deploys/{deployId}/promote`

## Request

- Base URL: `https://api.percher.run`
- URL: `https://api.percher.run/apps/{appRef}/deploys/{deployId}/promote`
- Auth: HTTP bearer

## Path parameters

- `appRef` string, required
- `deployId` string, required

## Response `200`

Preview promoted. When ownership committed but the route move failed, the body carries routeSwapDeferred: true - the promotion is durable and reconcile converges the route.

## Other responses

- `400`: Not promotable or expired
- `409`: The preview changed while promoting (discarded, replaced, already promoted) or the app is being deleted

---

[API](https://skmtc.dev/percher/apis/percher-api.md) · [All operations](https://skmtc.dev/percher/apis/percher-api/llms.txt) · [OpenAPI document](https://skmtc.dev/percher/apis/percher-api/revisions/d9e7089c21e5?raw)
