---
title: "Start a new offline transfer import"
method: POST
path: "/api/v4/offline_imports"
tags: ["offline_transfers"]
---

# Start a new offline transfer import

`POST /api/v4/offline_imports`

## Request

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

Initiates a new offline transfer import from object storage. For more information, see https://docs.gitlab.com/user/group/import/offline_transfer_migrations/

## Request body

- PostApiV4OfflineImports: Start a new offline transfer import
  - `bucket` string, required: Name of the object storage bucket where export data is stored
  - `aws_s3_configuration` object: AWS S3 object storage configuration
    - `aws_access_key_id` string, required: AWS S3 access key ID
    - `aws_secret_access_key` string, required: AWS S3 secret access key
    - `region` string, required: AWS S3 object storage region
    - `path_style` boolean: Use path-style URLs instead of virtual-hosted-style URLs
  - `s3_compatible_configuration` object: MinIO or other S3-compatible object storage configuration
    - `aws_access_key_id` string, required: S3-compatible access key ID
    - `aws_secret_access_key` string, required: S3-compatible secret access key
    - `region` string, required: S3-compatible object storage region
    - `endpoint` string, required: Object storage location endpoint
    - `path_style` boolean: Use path-style URLs instead of virtual-hosted-style URLs
  - `gcs_configuration` object: Google Cloud Storage configuration using a service account JSON key
    - `google_project` string, required: Google Cloud project ID
    - `google_json_key_string` string, required: Google Cloud service account JSON key contents
  - `gcs_hmac_configuration` object: Google Cloud Storage configuration using S3-interoperability HMAC keys
    - `google_storage_access_key_id` string, required: GCS HMAC access key ID
    - `google_storage_secret_access_key` string, required: GCS HMAC secret
    - `region` string, required: GCS bucket region
    - `path_style` boolean: Use path-style URLs instead of virtual-hosted-style URLs
  - `gcs_adc_configuration` object: Google Cloud Storage configuration using Application Default Credentials. Available on GitLab Self-Managed or GitLab Dedicated, and must be enabled by an administrator. Only administrators can use these credentials, and the bucket name must start with "gitlab-offline-transfer-". For more information, see https://docs.gitlab.com/administration/settings/import_and_export_settings/#allow-application-default-credentials-for-offline-transfer
    - `google_project` string, required: Google Cloud project ID
  - `export_prefix` string, required: Prefix of the export within the bucket
  - `entities` object[], required: List of entities to import
    - `source_type` 'group_entity' | 'project_entity', required: Type of the entity to import
    - `source_full_path` string, required: Full path of the entity on the source instance
    - `destination_namespace` string, required: Full path of the destination namespace
    - `destination_slug` string: Destination slug for the imported entity

## Response `201`

Start a new offline transfer import

- 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
- `429`: Too many requests

---

[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)
