---
title: "Retry checkpoint build"
method: POST
path: "/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/retry-build"
---

# Retry checkpoint build

`POST /api/apps/{app_id}/app-checkpoints/{checkpoint_id}/retry-build`

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Starts a new preview build for a [checkpoint](/developers/references/app-management/get-started/concepts#checkpoints) and returns without waiting for it to finish.

Use it when a checkpoint's `preview_status` in [List checkpoints](/api-reference/list-checkpoints) is `failed`. It works on a checkpoint in any state. When the checkpoint's commit already has a build, nothing is rebuilt and the checkpoint is marked `ready` straight away.

The build runs in the background. Poll [List checkpoints](/api-reference/list-checkpoints) and watch the checkpoint's `preview_status` until it's `ready` or `failed`. When it fails, `build_error.message` says why.

Only one build of a commit runs at a time. Retrying while another build of the same commit is still running doesn't start a second one in parallel. The retry waits for that build and only builds again if it didn't succeed. If the wait runs too long, the checkpoint is marked `failed` with a `build_error.message` saying it timed out waiting for another build, and you can retry once that build has finished.

<Warning>A checkpoint whose `git_commit_hash` is `null` was saved before the app's code was kept in git. Retrying its build first saves that checkpoint's code to the app as a new commit, which changes the app's current code.</Warning>

<Note>This endpoint accepts a personal API key. A read-only key is refused, and workspace API keys are not accepted.</Note>

## Path parameters

- `checkpoint_id` string, required — ID of the checkpoint, as returned in `id` by [List checkpoints](/api-reference/list-checkpoints).
- `app_id` string, required — ID of the app.

## Response `200`

Where the build stands, and the commit being built.

- RetryCheckpointBuildResponse — Where a checkpoint's preview build stands when the call returns.
  - `status` 'building' | 'ready' | 'skipped', required — Where the build stands when the call returns. Either `building` (the build started in the background), `ready` (the checkpoint's commit was already built, so nothing was rebuilt), or `skipped` (the app was imported from an external repository, and those apps have no preview build).
  - `git_commit_hash` string, required — Git commit hash of the code being built, the same as the checkpoint's `git_commit_hash`.

## Other responses

- `400` — The checkpoint has no commit to build.
- `401` — Missing or invalid credentials.
- `403` — You don't have access to this app, or you used a read-only key or a workspace API key. These endpoints take a full-access personal API key.
- `404` — App not found, or the app has no checkpoint with this ID.
- `409` — The app's main line is protected, so its state can't be changed directly.

## Changes

> 18 revisions in range; 1 not diffed.

- **2026-09-28** `28fc82924122` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/apps/:app_id/app-checkpoints/:checkpoint_id/retry-build/post.md)

---

[API](https://skmtc.dev/adexad/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/adexad/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adexad/apis/base44-app-management-api/revisions/28fc82924122?raw)
