---
title: "Create an organization repository"
method: POST
path: "/orgs/{org}/repos"
tags: ["repos"]
---

# Create an organization repository

`POST /orgs/{org}/repos`

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

**OAuth scope requirements**

When using [OAuth](https://docs.github.com/enterprise-server@3.5/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:

*   `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.
*   `repo` scope to create a private repository

## Path parameters

- `org` string, required

## Request body

- object
  - `name` string, required — The name of the repository.
  - `description` string — A short description of the repository.
  - `homepage` string — A URL with more information about the repository.
  - `private` boolean — Whether the repository is private.
  - `visibility` 'public' | 'private' | 'internal' — The visibility of the repository. **Note**: For GitHub Enterprise Server, this endpoint will only list repositories available to all users on the enterprise. For more information, see "[Creating an internal repository](https://docs.github.com/enterprise-server@3.5/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)" in the GitHub Help documentation. The `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.
  - `has_issues` boolean — Either `true` to enable issues for this repository or `false` to disable them.
  - `has_projects` boolean — Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.
  - `has_wiki` boolean — Either `true` to enable the wiki for this repository or `false` to disable it.
  - `has_downloads` boolean — Whether downloads are enabled.
  - `is_template` boolean — Either `true` to make this repo available as a template repository or `false` to prevent it.
  - `team_id` integer — The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.
  - `auto_init` boolean — Pass `true` to create an initial commit with empty README.
  - `gitignore_template` string — Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, "Haskell".
  - `license_template` string — Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://docs.github.com/enterprise-server@3.5/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, "mit" or "mpl-2.0".
  - `allow_squash_merge` boolean — Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.
  - `allow_merge_commit` boolean — Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
  - `allow_rebase_merge` boolean — Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.
  - `allow_auto_merge` boolean — Either `true` to allow auto-merge on pull requests, or `false` to disallow auto-merge.
  - `delete_branch_on_merge` boolean — Either `true` to allow automatically deleting head branches when pull requests are merged, or `false` to prevent automatic deletion. **The authenticated user must be an organization owner to set this property to `true`.**
  - `use_squash_pr_title_as_default` boolean — Either `true` to allow squash-merge commits to use pull request title, or `false` to use commit message. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
  - `squash_merge_commit_title` 'PR_TITLE' | 'COMMIT_OR_PR_TITLE' — The default value for a squash merge commit title: - `PR_TITLE` - default to the pull request's title. - `COMMIT_OR_PR_TITLE` - default to the commit's title (if only one commit) or the pull request's title (when more than one commit).
  - `squash_merge_commit_message` 'PR_BODY' | 'COMMIT_MESSAGES' | 'BLANK' — The default value for a squash merge commit message: - `PR_BODY` - default to the pull request's body. - `COMMIT_MESSAGES` - default to the branch's commit messages. - `BLANK` - default to a blank commit message.
  - `merge_commit_title` 'PR_TITLE' | 'MERGE_MESSAGE' — The default value for a merge commit title. - `PR_TITLE` - default to the pull request's title. - `MERGE_MESSAGE` - default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
  - `merge_commit_message` 'PR_BODY' | 'PR_TITLE' | 'BLANK' — The default value for a merge commit message. - `PR_TITLE` - default to the pull request's title. - `PR_BODY` - default to the pull request's body. - `BLANK` - default to a blank commit message.

## Response `201`

Response

- Repository — A repository on GitHub.
  - `id` integer, required — Unique identifier of the repository
  - `node_id` string, required
  - `name` string, required — The name of the repository.
  - `full_name` string, required
  - `license` NullableLicenseSimple, nullable, required — License Simple
    - `key` string, required
    - `name` string, required
    - `url` string, uri, nullable, required
    - `spdx_id` string, nullable, required
    - `node_id` string, required
    - `html_url` string, uri
  - `organization` NullableSimpleUser, nullable — A GitHub user.
    - `name` string, nullable
    - `email` string, nullable
    - `login` string, required
    - `id` integer, required
    - `node_id` string, required
    - `avatar_url` string, uri, required
    - `gravatar_id` string, nullable, required
    - `url` string, uri, required
    - `html_url` string, uri, required
    - `followers_url` string, uri, required
    - `following_url` string, required
    - `gists_url` string, required
    - `starred_url` string, required
    - `subscriptions_url` string, uri, required
    - `organizations_url` string, uri, required
    - `repos_url` string, uri, required
    - `events_url` string, required
    - `received_events_url` string, uri, required
    - `type` string, required
    - `site_admin` boolean, required
    - `starred_at` string
  - `forks` integer, required
  - `permissions` object
    - `admin` boolean, required
    - `pull` boolean, required
    - `triage` boolean
    - `push` boolean, required
    - `maintain` boolean
  - `owner` SimpleUser, required — A GitHub user.
    - `name` string, nullable
    - `email` string, nullable
    - `login` string, required
    - `id` integer, required
    - `node_id` string, required
    - `avatar_url` string, uri, required
    - `gravatar_id` string, nullable, required
    - `url` string, uri, required
    - `html_url` string, uri, required
    - `followers_url` string, uri, required
    - `following_url` string, required
    - `gists_url` string, required
    - `starred_url` string, required
    - `subscriptions_url` string, uri, required
    - `organizations_url` string, uri, required
    - `repos_url` string, uri, required
    - `events_url` string, required
    - `received_events_url` string, uri, required
    - `type` string, required
    - `site_admin` boolean, required
    - `starred_at` string
  - `private` boolean, required — Whether the repository is private or public.
  - `html_url` string, uri, required
  - `description` string, nullable, required
  - `fork` boolean, required
  - `url` string, uri, required
  - `archive_url` string, required
  - `assignees_url` string, required
  - `blobs_url` string, required
  - `branches_url` string, required
  - `collaborators_url` string, required
  - `comments_url` string, required
  - `commits_url` string, required
  - `compare_url` string, required
  - `contents_url` string, required
  - `contributors_url` string, uri, required
  - `deployments_url` string, uri, required
  - `downloads_url` string, uri, required
  - `events_url` string, uri, required
  - `forks_url` string, uri, required
  - `git_commits_url` string, required
  - `git_refs_url` string, required
  - `git_tags_url` string, required
  - `git_url` string, required
  - `issue_comment_url` string, required
  - `issue_events_url` string, required
  - `issues_url` string, required
  - `keys_url` string, required
  - `labels_url` string, required
  - `languages_url` string, uri, required
  - `merges_url` string, uri, required
  - `milestones_url` string, required
  - `notifications_url` string, required
  - `pulls_url` string, required
  - `releases_url` string, required
  - `ssh_url` string, required
  - `stargazers_url` string, uri, required
  - `statuses_url` string, required
  - `subscribers_url` string, uri, required
  - `subscription_url` string, uri, required
  - `tags_url` string, uri, required
  - `teams_url` string, uri, required
  - `trees_url` string, required
  - `clone_url` string, required
  - `mirror_url` string, uri, nullable, required
  - `hooks_url` string, uri, required
  - `svn_url` string, uri, required
  - `homepage` string, uri, nullable, required
  - `language` string, nullable, required
  - `forks_count` integer, required
  - `stargazers_count` integer, required
  - `watchers_count` integer, required
  - `size` integer, required — The size of the repository. Size is calculated hourly. When a repository is initially created, the size is 0.
  - `default_branch` string, required — The default branch of the repository.
  - `open_issues_count` integer, required
  - `is_template` boolean — Whether this repository acts as a template that can be used to generate new repositories.
  - `topics` string[]
  - `has_issues` boolean, required — Whether issues are enabled.
  - `has_projects` boolean, required — Whether projects are enabled.
  - `has_wiki` boolean, required — Whether the wiki is enabled.
  - `has_pages` boolean, required
  - `has_downloads` boolean, required — Whether downloads are enabled.
  - `archived` boolean, required — Whether the repository is archived.
  - `disabled` boolean, required — Returns whether or not this repository disabled.
  - `visibility` string — The repository visibility: public, private, or internal.
  - `pushed_at` string, date-time, nullable, required
  - `created_at` string, date-time, nullable, required
  - `updated_at` string, date-time, nullable, required
  - `allow_rebase_merge` boolean — Whether to allow rebase merges for pull requests.
  - `template_repository` object, nullable
    - `id` integer
    - `node_id` string
    - `name` string
    - `full_name` string
    - `owner` object
      - `login` string
      - `id` integer
      - `node_id` string
      - `avatar_url` string
      - `gravatar_id` string
      - `url` string
      - `html_url` string
      - `followers_url` string
      - `following_url` string
      - `gists_url` string
      - `starred_url` string
      - `subscriptions_url` string
      - `organizations_url` string
      - `repos_url` string
      - `events_url` string
      - `received_events_url` string
      - `type` string
      - `site_admin` boolean
    - `private` boolean
    - `html_url` string
    - `description` string
    - `fork` boolean
    - `url` string
    - `archive_url` string
    - `assignees_url` string
    - `blobs_url` string
    - `branches_url` string
    - `collaborators_url` string
    - `comments_url` string
    - `commits_url` string
    - `compare_url` string
    - `contents_url` string
    - `contributors_url` string
    - `deployments_url` string
    - `downloads_url` string
    - `events_url` string
    - `forks_url` string
    - `git_commits_url` string
    - `git_refs_url` string
    - `git_tags_url` string
    - `git_url` string
    - `issue_comment_url` string
    - `issue_events_url` string
    - `issues_url` string
    - `keys_url` string
    - `labels_url` string
    - `languages_url` string
    - `merges_url` string
    - `milestones_url` string
    - `notifications_url` string
    - `pulls_url` string
    - `releases_url` string
    - `ssh_url` string
    - `stargazers_url` string
    - `statuses_url` string
    - `subscribers_url` string
    - `subscription_url` string
    - `tags_url` string
    - `teams_url` string
    - `trees_url` string
    - `clone_url` string
    - `mirror_url` string
    - `hooks_url` string
    - `svn_url` string
    - `homepage` string
    - `language` string
    - `forks_count` integer
    - `stargazers_count` integer
    - `watchers_count` integer
    - `size` integer
    - `default_branch` string
    - `open_issues_count` integer
    - `is_template` boolean
    - `topics` string[]
    - `has_issues` boolean
    - `has_projects` boolean
    - `has_wiki` boolean
    - `has_pages` boolean
    - `has_downloads` boolean
    - `archived` boolean
    - `disabled` boolean
    - `visibility` string
    - `pushed_at` string
    - `created_at` string
    - `updated_at` string
    - `permissions` object
      - `admin` boolean
      - `maintain` boolean
      - `push` boolean
      - `triage` boolean
      - `pull` boolean
    - `allow_rebase_merge` boolean
    - `temp_clone_token` string
    - `allow_squash_merge` boolean
    - `allow_auto_merge` boolean
    - `delete_branch_on_merge` boolean
    - `allow_update_branch` boolean
    - `allow_merge_commit` boolean
    - `subscribers_count` integer
    - `network_count` integer
  - `temp_clone_token` string
  - `allow_squash_merge` boolean — Whether to allow squash merges for pull requests.
  - `allow_auto_merge` boolean — Whether to allow Auto-merge to be used on pull requests.
  - `delete_branch_on_merge` boolean — Whether to delete head branches when pull requests are merged
  - `allow_update_branch` boolean — Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging.
  - `allow_merge_commit` boolean — Whether to allow merge commits for pull requests.
  - `allow_forking` boolean — Whether to allow forking this repo
  - `subscribers_count` integer
  - `network_count` integer
  - `open_issues` integer, required
  - `watchers` integer, required
  - `master_branch` string
  - `starred_at` string
  - `anonymous_access_enabled` boolean — Whether anonymous git access is enabled for this repository

## Other responses

- `403` — Forbidden
- `422` — Validation failed, or the endpoint has been spammed.

---

[API](https://skmtc.net/github/apis/github-v3-rest-api-4.md) · [All operations](https://skmtc.net/github/apis/github-v3-rest-api-4/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/github/github-v3-rest-api-4/versions/ee6c7a46328e/schema)
