Skip to content
POST/repos/{owner}/{name}/branches/{branch}/rename

Needs the Write role or higher; the default branch, which stays the default, needs the Admin role. Open pull requests from the branch follow it, and web addresses that name the old branch redirect until a branch of that name is made again. Git remotes do not follow: fetch, then rename or re-track the branch in your clone. Give a branch with slashes URL-encoded in the path, e.g. feature%2Flogin.

The repository after the rename; renaming the default branch changes default_branch. Send a branch name with slashes URL-encoded, as one path segment. Refused with 404 when there is no such branch, 409 when a branch named new_name exists, 422 when new_name is not a valid branch name, and 403 without the Write role, or without the Admin role for the default branch. See Rename a branch.

Name Type Required Description
owner string Yes The workspace that owns the repository.
name string Yes The repository’s name.
branch string Yes The branch’s name now, e.g. “feature/login”. URL-encode slashes in the path.

Send a JSON object. Names are snake_case, as in responses; the camelCase spelling is accepted too.

Name Type Required Description
new_name string Yes What to call it.
curl -X POST https://api.g1t.sh/repos/flagon-io/hello/branches/feature%2Flogin/rename \
-H "Authorization: Bearer $G1T_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"new_name": "feature/sign-in"
}'

A successful request answers 200 with:

{
"id": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
"namespace": "flagon-io",
"name": "hello",
"description": "A tiny service that says hello.",
"is_private": false,
"owner_id": "usr_01kkntcg1eeb98j62xjm7eh09p",
"default_branch": "main",
"fork_of": null,
"protected": true,
"created_at": "2026-09-28T14:11:52.640Z",
"topics": [
"http",
"example"
],
"website": "https://hello.g1t.page",
"archived_at": null
}

A failed request answers with one of these statuses and a body like {"error": {"code": "not_found", "message": "Repository not found."}}. See errors.

Status Code When
401 unauthenticated A token is required, or the one sent is not valid.
403 forbidden The token is valid but not allowed to do this, such as a member-only change or an agent token outside its repository.
404 not_found It does not exist, or you cannot see it.
409 conflict The request conflicts with the current state.
422 invalid The input is not valid. message says which field and why.