---
title: "Set or rename the project's address-form repo name (repo-first-onramp D6)"
method: POST
path: "/projects/v1/{project_id}/repo-name"
tags: ["Projects"]
---

# Set or rename the project's address-form repo name (repo-first-onramp D6)

`POST /projects/v1/{project_id}/repo-name`

## Request

- Base URL: `https://api.run402.com`
- URL: `https://api.run402.com/projects/v1/{project_id}/repo-name`
- Auth: one of:
  - HTTP bearer
  - API key in header `SIGN-IN-WITH-X`

Explicit set/rename of the project's per-org-unique, address-form name (`run402::<org-slug>/<repo-name>`) — the address counterpart to the free-text display `name` on PATCH /projects/v1/{project_id}, which is left untouched. A project also acquires this name implicitly via push-to-create (POST /vaults/v1 with {org_slug, repo_name}); this route is the explicit alternative. No fee. Same authority tier as renaming the display name (project.rename).

## Path parameters

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

## Request body

- object
  - `name` string, required: Lowercase [a-z0-9-], no leading/trailing/double hyphen, at most 63 characters.

## Response `200`

The project's repo name, set or renamed.

- object
  - `project_id` string: Run402 project ID. Public IDs are not UUIDs.
  - `repo_name` string
  - `previous_repo_name` unknown

## Other responses

- `400`: Invalid name (grammar violation).
- `403`: Not authorized for this project action (authorize-before-reveal).
- `409`: Name already held by another project in this org (REPO_NAME_TAKEN).

---

[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)
