POST/repos/{template_owner}/{template_repo}/generate

Create a repository using a template

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. If the repository is not public, the authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

OAuth app tokens and personal access tokens (classic) need the public_repo or repo scope to create a public repository, and repo scope to create a private repository.

  • RetriesRetries up to 2×, 500ms backoff, 30s timeout.

2 parameters · 5 body fields
template_ownerstringrequired
The account owner of the template repository. The name is not case sensitive.
template_repostringrequired
The name of the template repository without the `.git` extension. The name is not case sensitive.
ownerstringoptional
The organization or person who will own the new repository. To create a new repository in an organization, the authenticated user must be a member of the specified organization.
namestringrequired
The name of the new repository.
descriptionstringoptional
A short description of the new repository.
include_all_branchesbooleanoptional
Set to `true` to include the directory structure and files from all branches in the template repository, and not just the default branch. Default: `false`.
Default:false
privatebooleanoptional
Either `true` to create a new private repository or `false` to create a new public one.
Default:false

1 status code
201Response
idintegerrequired
node_idstringrequired
namestringrequired
full_namestringrequired
ownerobjectrequired
A GitHub user.
privatebooleanrequired
html_urlstringrequired
descriptionstringrequired
forkbooleanrequired
urlstringrequired
archive_urlstringrequired
assignees_urlstringrequired
blobs_urlstringrequired
branches_urlstringrequired
collaborators_urlstringrequired
comments_urlstringrequired
commits_urlstringrequired
compare_urlstringrequired
contents_urlstringrequired
contributors_urlstringrequired
deployments_urlstringrequired
downloads_urlstringrequired
events_urlstringrequired
forks_urlstringrequired
git_commits_urlstringrequired
git_refs_urlstringrequired
git_tags_urlstringrequired
git_urlstringrequired
issue_comment_urlstringrequired
issue_events_urlstringrequired
issues_urlstringrequired
keys_urlstringrequired
labels_urlstringrequired
languages_urlstringrequired
merges_urlstringrequired
milestones_urlstringrequired
notifications_urlstringrequired
pulls_urlstringrequired
releases_urlstringrequired
ssh_urlstringrequired
stargazers_urlstringrequired
statuses_urlstringrequired
subscribers_urlstringrequired
subscription_urlstringrequired
tags_urlstringrequired
teams_urlstringrequired
trees_urlstringrequired
clone_urlstringrequired
mirror_urlstringrequired
hooks_urlstringrequired
svn_urlstringrequired
homepagestringrequired
languagestringrequired
forks_countintegerrequired
stargazers_countintegerrequired
watchers_countintegerrequired
sizeintegerrequired
The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0.
default_branchstringrequired
open_issues_countintegerrequired
is_templatebooleanoptional
topicsarray<string>optional
has_issuesbooleanrequired
has_projectsbooleanrequired
has_wikibooleanrequired
has_pagesbooleanrequired
has_downloadsbooleanoptional
has_discussionsbooleanrequired
has_pull_requestsbooleanoptional
pull_request_creation_policystringoptional
The policy controlling who can create pull requests: all or collaborators_only.
Allowed:allcollaborators_only
archivedbooleanrequired
disabledbooleanrequired
Returns whether or not this repository disabled.
visibilitystringoptional
The repository visibility: public, private, or internal.
pushed_atstringrequired
created_atstringrequired
updated_atstringrequired
permissionsobjectoptional
allow_rebase_mergebooleanoptional
template_repositoryobjectoptional
A repository on GitHub.
temp_clone_tokenstringoptional
allow_squash_mergebooleanoptional
allow_auto_mergebooleanoptional
delete_branch_on_mergebooleanoptional
allow_merge_commitbooleanoptional
allow_update_branchbooleanoptional
use_squash_pr_title_as_defaultbooleanoptional
squash_merge_commit_titlestringoptional
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).
Allowed:PR_TITLECOMMIT_OR_PR_TITLE
squash_merge_commit_messagestringoptional
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.
Allowed:PR_BODYCOMMIT_MESSAGESBLANK
merge_commit_titlestringoptional
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).
Allowed:PR_TITLEMERGE_MESSAGE
merge_commit_messagestringoptional
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.
Allowed:PR_BODYPR_TITLEBLANK
allow_forkingbooleanoptional
web_commit_signoff_requiredbooleanoptional
subscribers_countintegerrequired
network_countintegerrequired
licenseobjectrequired
License Simple
organizationobjectoptional
A GitHub user.
parentobjectoptional
A repository on GitHub.
sourceobjectoptional
A repository on GitHub.
forksintegerrequired
master_branchstringoptional
open_issuesintegerrequired
watchersintegerrequired
anonymous_access_enabledbooleanoptional
Whether anonymous git access is allowed.
Default:true
code_of_conductobjectoptional
Code of Conduct Simple
security_and_analysisobjectoptional
custom_propertiesobjectoptional
The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.

Was this helpful?