GitLab Bulk Imports API

The Bulk Imports API from GitLab — 5 operation(s) for bulk imports.

Operations 6

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /api/v4/bulk_imports/{import_id}/entities/{entity_id} Get one entity from a group migration · GitLab Get GitLab Migration Entity Details #
Ask an LLM
“How do I check the status of a single group or project inside a migration?”
“Why did one entity in my direct-transfer migration fail?”
Tell an agent
Show entity {entity_id} of migration {import_id}.
Get the progress of entity {entity_id} in bulk import {import_id}.
GET /api/v4/bulk_imports/{import_id}/entities List entities in one migration · GitLab List GitLab Migration Entities #
Ask an LLM
“Which groups and projects are part of a specific migration?”
“Can I list only the failed entities in one bulk import?”
Tell an agent
List the entities in migration {import_id}.
Show entities in migration {import_id} with status {status}.
GET /api/v4/bulk_imports/{import_id} Get a group migration · GitLab Get GitLab Migration Details #
Ask an LLM
“How do I check whether a GitLab-to-GitLab migration has finished?”
“What source and status does a specific bulk import have?”
Tell an agent
Show migration {import_id}.
Get the overall status of bulk import {import_id}.
GET /api/v4/bulk_imports/entities List entities across all migrations · GitLab List All GitLab Migrations' Entities #
Ask an LLM
“Can I see every group and project I've migrated, across all my imports?”
“Which migrated entities are still in progress across all bulk imports?”
Tell an agent
List the entities from all my migrations.
Show entities across all migrations with status {status}.
GET /api/v4/bulk_imports List all group migrations · GitLab List All GitLab Migrations #
Ask an LLM
“What GitLab migrations have I started?”
“Can I list my direct-transfer migrations filtered by status?”
Tell an agent
List all my GitLab migrations.
Show my bulk imports that are {status}, sorted {sort}.
POST /api/v4/bulk_imports Start a group or project migration · GitLab Start a New GitLab Migration #
Ask an LLM
“How do I migrate a group from another GitLab instance by direct transfer?”
“Can I choose whether projects are migrated along with the group?”
Tell an agent
Migrate {source_type} {source_full_path} from {url} into namespace {destination_namespace} using token {access_token}.
Start a migration of {source_full_path} ({source_type}) from {url} with token {access_token} into {destination_namespace} as slug {destination_slug}.

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gitlab:gitlab-bulk-imports-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gitlab-bulk-imports-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GitLab Bulk Imports API
  version: v4
  description: An OpenAPI definition for the GitLab REST API.
  termsOfService: https://about.gitlab.com/terms/
  license:
    name: CC BY-SA 4.0
    url: https://gitlab.com/gitlab-org/gitlab/-/blob/master/LICENSE
servers:
- url: https://www.gitlab.com/api/
security:
- ApiKeyAuth: []
tags:
- name: Bulk Imports
  description: Operations about bulk_imports
paths:
  /api/v4/bulk_imports/{import_id}/entities/{entity_id}:
    get:
      tags:
      - Bulk Imports
      summary: GitLab Get GitLab Migration Entity Details
      description: This feature was introduced in GitLab 14.1.
      operationId: getApiV4BulkImportsImportIdEntitiesEntityId
      parameters:
      - name: import_id
        in: path
        description: The ID of user's GitLab Migration
        required: true
        schema:
          type: integer
          format: int32
        example: 42
      - name: entity_id
        in: path
        description: The ID of GitLab Migration entity
        required: true
        schema:
          type: integer
          format: int32
        example: 42
      responses:
        '200':
          description: Get GitLab Migration entity details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_BulkImports'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not found
          content: {}
        '503':
          description: Service unavailable
          content: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/v4/bulk_imports/{import_id}/entities:
    get:
      tags:
      - Bulk Imports
      summary: GitLab List GitLab Migration Entities
      description: This feature was introduced in GitLab 14.1.
      operationId: getApiV4BulkImportsImportIdEntities
      parameters:
      - name: import_id
        in: path
        description: The ID of user's GitLab Migration
        required: true
        schema:
          type: integer
          format: int32
        example: 42
      - name: status
        in: query
        description: Return import entities with specified status
        schema:
          type: string
          enum:
          - created
          - started
          - finished
          - timeout
          - failed
        example: created
      - name: page
        in: query
        description: Current page number
        schema:
          type: integer
          format: int32
          default: 1
        example: 42
      - name: per_page
        in: query
        description: Number of items per page
        schema:
          type: integer
          format: int32
          default: 20
        example: 42
      responses:
        '200':
          description: List GitLab Migration entities
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/API_Entities_BulkImports'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not found
          content: {}
        '503':
          description: Service unavailable
          content: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/v4/bulk_imports/{import_id}:
    get:
      tags:
      - Bulk Imports
      summary: GitLab Get GitLab Migration Details
      description: This feature was introduced in GitLab 14.1.
      operationId: getApiV4BulkImportsImportId
      parameters:
      - name: import_id
        in: path
        description: The ID of user's GitLab Migration
        required: true
        schema:
          type: integer
          format: int32
        example: 42
      responses:
        '200':
          description: Get GitLab Migration details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_BulkImport'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not found
          content: {}
        '503':
          description: Service unavailable
          content: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/v4/bulk_imports/entities:
    get:
      tags:
      - Bulk Imports
      summary: GitLab List All GitLab Migrations' Entities
      description: This feature was introduced in GitLab 14.1.
      operationId: getApiV4BulkImportsEntities
      parameters:
      - name: page
        in: query
        description: Current page number
        schema:
          type: integer
          format: int32
          default: 1
        example: 42
      - name: per_page
        in: query
        description: Number of items per page
        schema:
          type: integer
          format: int32
          default: 20
        example: 42
      - name: sort
        in: query
        description: Return GitLab Migrations sorted in created by `asc` or `desc` order.
        schema:
          type: string
          default: desc
          enum:
          - asc
          - desc
        example: asc
      - name: status
        in: query
        description: Return all GitLab Migrations' entities with specified status
        schema:
          type: string
          enum:
          - created
          - started
          - finished
          - timeout
          - failed
        example: created
      responses:
        '200':
          description: List all GitLab Migrations' entities
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/API_Entities_BulkImports'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not found
          content: {}
        '503':
          description: Service unavailable
          content: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/v4/bulk_imports:
    get:
      tags:
      - Bulk Imports
      summary: GitLab List All GitLab Migrations
      description: This feature was introduced in GitLab 14.1.
      operationId: getApiV4BulkImports
      parameters:
      - name: page
        in: query
        description: Current page number
        schema:
          type: integer
          format: int32
          default: 1
        example: 42
      - name: per_page
        in: query
        description: Number of items per page
        schema:
          type: integer
          format: int32
          default: 20
        example: 42
      - name: sort
        in: query
        description: Return GitLab Migrations sorted in created by `asc` or `desc` order.
        schema:
          type: string
          default: desc
          enum:
          - asc
          - desc
        example: asc
      - name: status
        in: query
        description: Return GitLab Migrations with specified status
        schema:
          type: string
          enum:
          - created
          - started
          - finished
          - timeout
          - failed
        example: created
      responses:
        '200':
          description: List all GitLab Migrations
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/API_Entities_BulkImport'
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not found
          content: {}
        '503':
          description: Service unavailable
          content: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      tags:
      - Bulk Imports
      summary: GitLab Start a New GitLab Migration
      description: This feature was introduced in GitLab 14.2.
      operationId: postApiV4BulkImports
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
              - configuration[access_token]
              - configuration[url]
              - entities[destination_namespace]
              - entities[source_full_path]
              - entities[source_type]
              properties:
                configuration[url]:
                  type: string
                  description: Source GitLab instance URL
                configuration[access_token]:
                  type: string
                  description: Access token to the source GitLab instance
                entities[source_type]:
                  type: array
                  description: Source entity type
                  items:
                    type: string
                    enum:
                    - group_entity
                    - project_entity
                entities[source_full_path]:
                  type: array
                  description: Relative path of the source entity to import
                  items:
                    type: string
                entities[destination_namespace]:
                  type: array
                  description: Destination namespace for the entity
                  items:
                    type: string
                entities[destination_slug]:
                  type: array
                  description: Destination slug for the entity
                  items:
                    type: string
                entities[destination_name]:
                  type: array
                  description: 'Deprecated: Use :destination_slug instead. Destination slug for the entity'
                  items:
                    type: string
                entities[migrate_projects]:
                  type: array
                  description: Indicates group migration should include nested projects
                  items:
                    type: boolean
        required: true
      responses:
        '200':
          description: Start a new GitLab Migration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_BulkImport'
        '400':
          description: Bad request
          content: {}
        '401':
          description: Unauthorized
          content: {}
        '404':
          description: Not found
          content: {}
        '422':
          description: Unprocessable entity
          content: {}
        '503':
          description: Service unavailable
          content: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    API_Entities_BulkImport:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        status:
          type: string
          example: finished
          enum:
          - created
          - started
          - finished
          - timeout
          - failed
        source_type:
          type: string
          example: gitlab
        created_at:
          type: string
          format: date-time
          example: 2012-05-28 11:42:42+00:00
        updated_at:
          type: string
          format: date-time
          example: 2012-05-28 11:42:42+00:00
      description: API_Entities_BulkImport model
    API_Entities_BulkImports_EntityFailure:
      type: object
      properties:
        relation:
          type: string
          example: group
        step:
          type: string
          example: extractor
        exception_message:
          type: string
          example: error message
        exception_class:
          type: string
          example: Exception
        correlation_id_value:
          type: string
          example: dfcf583058ed4508e4c7c617bd7f0edd
        created_at:
          type: string
          format: date-time
          example: 2012-05-28 11:42:42+00:00
        pipeline_class:
          type: string
          example: BulkImports::Groups::Pipelines::GroupPipeline
        pipeline_step:
          type: string
          example: extractor
    API_Entities_BulkImports:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        bulk_import_id:
          type: integer
          format: int32
          example: 1
        status:
          type: string
          example: created
          enum:
          - created
          - started
          - finished
          - timeout
          - failed
        entity_type:
          type: string
          enum:
          - group
          - project
          example: group
        source_full_path:
          type: string
          example: source_group
        destination_full_path:
          type: string
          example: some_group/source_project
        destination_name:
          type: string
          example: destination_slug
        destination_slug:
          type: string
          example: destination_slug
        destination_namespace:
          type: string
          example: destination_path
        parent_id:
          type: integer
          format: int32
          example: 1
        namespace_id:
          type: integer
          format: int32
          example: 1
        project_id:
          type: integer
          format: int32
          example: 1
        created_at:
          type: string
          format: date-time
          example: 2012-05-28 11:42:42+00:00
        updated_at:
          type: string
          format: date-time
          example: 2012-05-28 11:42:42+00:00
        failures:
          type: array
          items:
            $ref: '#/components/schemas/API_Entities_BulkImports_EntityFailure'
        migrate_projects:
          type: boolean
          example: true
      description: API_Entities_BulkImports model
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Private-Token