---
title: "Fork a repository"
method: POST
path: "/api/repos/{owner}/{repo}/fork"
tags: ["Repositories"]
---

# Fork a repository

`POST /api/repos/{owner}/{repo}/fork`

## Request

- Base URL: `https://git.cafe`
- URL: `https://git.cafe/api/repos/{owner}/{repo}/fork`
- Auth: one of:
  - API key in cookie `gc-session`
  - HTTP bearer
  - HTTP basic
  - HTTP token
  - OAuth 2
    - Authorization code: `/api/oauth/authorize`
    - Token URL: `/api/oauth/token` scopes: `repo:contents:read`

Admits a fork under the requested owner, copying only the default branch unless branches adds selected branches or allBranches copies every branch and tag. Returns 200 when complete or 202 with durable admission status; poll GET /orgs/{owner}/admissions/{repoId} for progress. requestKey, or the source-owner-name default, makes retries with the same selection converge. Requires authenticated authority and enforces current resource policy.

## Path parameters

- `owner` string, required
- `repo` string, required

## Request body

- object
  - `owner` string, required
  - `name` string
  - `requestKey` string
  - `branches` string[]
  - `allBranches` boolean

## Response `200`

Response for status 200

- object
  - `repoId` string, required
  - `state` 'pending' | 'running' | 'outcome_unknown' | 'complete' | 'blocked', required
  - `owner` string, required
  - `name` string, required

## Other responses

- `202`: Response for status 202
- `400`: The request is invalid.
- `401`: Authentication is required, or the supplied credential is invalid.
- `403`: The credential does not permit this operation. A `code`, when present, names the refusal.
- `404`: Response for status 404
- `409`: The request conflicts with the current state. A `code`, when present, names the refusal; `retryable` says whether the same request can succeed later, and `operationId` names the operation in the way.
- `429`: A rate limit is exhausted. Wait Retry-After seconds; the value is a hint, so back off on a repeat 429.
- `503`: Response for status 503

---

[API](https://skmtc.dev/gitcafe/apis/git-cafe-api.md) - [All operations](https://skmtc.dev/gitcafe/apis/git-cafe-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gitcafe/apis/git-cafe-api/revisions/9fa233d2986d?raw)
