---
title: "Start a group or project migration"
method: POST
path: "/api/v4/bulk_imports"
tags: ["imports"]
---

# Start a group or project migration

`POST /api/v4/bulk_imports`

## Request

- Base URL: `https://gitlab.com`
- URL: `https://gitlab.com/api/v4/bulk_imports`
- Auth: none declared

Starts a group or project migration. To migrate a project, specify `entities[project_entity]`.

## Request body `application/x-www-form-urlencoded`

- object
  - `configuration[url]` string, required: Source GitLab instance URL
  - `configuration[access_token]` string, required: Access token to the source GitLab instance
  - `entities[source_type]` string[], required: Source entity type
  - `entities[source_full_path]` string[], required: Relative path of the source entity to import
  - `entities[destination_namespace]` string[], required: Destination namespace for the entity
  - `entities[destination_slug]` string[]: Destination slug for the entity
  - `entities[destination_name]` string[]: Deprecated: Use :destination_slug instead. Destination slug for the entity
  - `entities[migrate_projects]` boolean[]: Indicates group migration should include nested projects
  - `entities[migrate_memberships]` boolean[]: The option to migrate memberships or not

## Response `201`

Start a group or project migration

- APIEntitiesBulkImport: API_Entities_BulkImport model
  - `id` integer, required
  - `status` 'created' | 'started' | 'finished' | 'timeout' | 'failed', required
  - `source_type` string, required
  - `source_url` string, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `has_failures` boolean, required

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `404`: Not found
- `422`: Unprocessable entity
- `503`: Service unavailable

---

[API](https://skmtc.dev/gitlab/apis/gitlab-api.md) - [All operations](https://skmtc.dev/gitlab/apis/gitlab-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gitlab/apis/gitlab-api/revisions/b234947ef3f2?raw)
