---
title: "Publish app as a forkable version"
method: POST
path: "/projects/v1/admin/{project_id}/publish"
tags: ["Publish"]
---

# Publish app as a forkable version

`POST /projects/v1/admin/{project_id}/publish`

## Request

- Base URL: `https://api.run402.com`
- URL: `https://api.run402.com/projects/v1/admin/{project_id}/publish`
- Auth: HTTP bearer

## Path parameters

- `project_id` string, required: Run402 project ID. Public IDs are not UUIDs.

## Request body

- object
  - `visibility` 'public' | 'unlisted' | 'private'
  - `fork_allowed` boolean
  - `description` string
  - `required_secrets` object[]

## Response `201`

Version published

- object

## Other responses

- `401`: Missing or invalid authentication. Run402-originated JSON bodies use the canonical ErrorEnvelope.

---

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