---
title: "Promote a package-shaped plain repo (root package.json at HEAD) into a saved package."
method: POST
path: "/v1/repos/{repo_id}/promote"
tags: ["repos"]
---

# Promote a package-shaped plain repo (root package.json at HEAD) into a saved package.

`POST /v1/repos/{repo_id}/promote`

## Request

- Base URL: `https://api.kody.codes`
- URL: `https://api.kody.codes/v1/repos/{repo_id}/promote`
- Auth: HTTP bearer

Promote a package-shaped plain repo (root package.json at HEAD) into a saved package. Runs the full external-push publish checks; on success creates the saved-package projection and removes the plain-repo row.

Org permission: `package:create`.

## Path parameters

- `repo_id` string, required

## Request body

- object
  - `name` string

## Response `200`

Success.

- object
  - `status` 'promoted', required
  - `package_id` string, required
  - `kody_id` string, required
  - `name` string, required
  - `published_commit` string, required
  - `message` string

## Other responses

- `400`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `401`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `403`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `404`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `409`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `413`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `429`: Too many requests (edge IP/token limit) or an entitlement / plan-cap limit. Wait at least `Retry-After` seconds before retrying.
- `500`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `503`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `default`: Error envelope `{ "error": { "code", "message", "details"? } }`.

---

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