---
title: "Regenerate App"
method: POST
path: "/api/v1/apps/{app_id}/regenerate"
tags: ["apps"]
---

# Regenerate App

`POST /api/v1/apps/{app_id}/regenerate`

Regenerate an app's bundle independently (without running finalize_steps).

Runs on the branch the caller NAMES, or — for a client that names none —
on their default work branch, auto-forked on first use. Never on `main`:
landing-only main admits no exception for the no-chat dispatch path,
because a regenerate that wrote straight to main would put one editor's
unreviewed build on the trunk while everyone else's branches sat behind it.

## Path parameters

- `app_id` string, uuid, required

## Request body

- RegenerateRequest — Optional body for regenerate. `branch_id` is the branch the client is actually on. It exists because the branch switcher lets one editor hold several open work branches, so resolving by `(app_id, user_id)` alone picks between them arbitrarily — which in staging dispatched a Regenerate onto a branch the user was not looking at. Optional so clients that have not been updated keep working; they get the caller's default branch, exactly as before.
  - `branch_id` string, uuid, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422` — Validation Error

## Changes

> 13 revisions in range; 1 not diffed.

- **2026-08-28** `eed6fb164abd` — 1 info
  - added optional request body

[Change history](https://skmtc.dev/netter/apis/dmi-backend/changes/api/v1/apps/:app_id/regenerate/post.md)

---

[API](https://skmtc.dev/netter/apis/dmi-backend.md) · [All operations](https://skmtc.dev/netter/apis/dmi-backend/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/netter/dmi-backend/revisions/23fc170642d3/schema)
