---
title: "Start an organization migration"
method: POST
path: "/orgs/{org}/migrations"
tags: ["migrations"]
---

# Start an organization migration

`POST /orgs/{org}/migrations`

Initiates the generation of a migration archive.

## Path parameters

- `org` string, required

## Request body

- object
  - `repositories` string[], required — A list of arrays indicating which repositories should be migrated.
  - `lock_repositories` boolean — Indicates whether repositories should be locked (to prevent manipulation) while migrating data.
  - `exclude_metadata` boolean — Indicates whether metadata should be excluded and only git source should be included for the migration.
  - `exclude_git_data` boolean — Indicates whether the repository git data should be excluded from the migration.
  - `exclude_attachments` boolean — Indicates whether attachments should be excluded from the migration (to reduce migration archive file size).
  - `exclude_releases` boolean — Indicates whether releases should be excluded from the migration (to reduce migration archive file size).
  - `exclude_owner_projects` boolean — Indicates whether projects owned by the organization or users should be excluded. from the migration.
  - `org_metadata_only` boolean — Indicates whether this should only include organization metadata (repositories array should be empty and will ignore other flags).
  - `exclude` string[] — Exclude related items from being returned in the response in order to improve performance of the request.

## Response `201`

Response

- Migration — A migration.
  - `id` integer, required
  - `owner` NullableSimpleUser, nullable, 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
    - `user_view_type` string
  - `guid` string, required
  - `state` string, required
  - `lock_repositories` boolean, required
  - `exclude_metadata` boolean, required
  - `exclude_git_data` boolean, required
  - `exclude_attachments` boolean, required
  - `exclude_releases` boolean, required
  - `exclude_owner_projects` boolean, required
  - `org_metadata_only` boolean, required
  - `repositories` Repository[], required — The repositories included in the migration. Only returned for export migrations.
    - `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
    - `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
      - `user_view_type` 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, in kilobytes. 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.
    - `has_discussions` boolean — Whether discussions are enabled.
    - `has_pull_requests` boolean — Whether pull requests are enabled.
    - `pull_request_creation_policy` 'all' | 'collaborators_only' — The policy controlling who can create pull requests: all or collaborators_only.
    - `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.
    - `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.
    - `use_squash_pr_title_as_default` boolean — Whether a squash merge commit can use the pull request title as default. **This property is closing down. 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.
    - `allow_merge_commit` boolean — Whether to allow merge commits for pull requests.
    - `allow_forking` boolean — Whether to allow forking this repo
    - `web_commit_signoff_required` boolean — Whether to require contributors to sign off on web-based commits
    - `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
    - `code_search_index_status` object — The status of the code search index for this repository
      - `lexical_search_ok` boolean
      - `lexical_commit_sha` string
  - `url` string, uri, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `node_id` string, required
  - `archive_url` string, uri
  - `exclude` string[] — Exclude related items from being returned in the response in order to improve performance of the request. The array can include any of: `"repositories"`.

## Other responses

- `404` — Resource not found
- `422` — Validation failed, or the endpoint has been spammed.

---

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