---
title: "Restore an uploaded mailbox import source"
method: POST
path: "/mailboxes/{id}/imports/{import_id}/restore"
tags: ["Mailboxes"]
---

# Restore an uploaded mailbox import source

`POST /mailboxes/{id}/imports/{import_id}/restore`

## Request

- Base URL: `https://shipmail.to/api/v1`
- URL: `https://shipmail.to/api/v1/mailboxes/{id}/imports/{import_id}/restore`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://shipmail.to/api/auth/oauth2/authorize`, token URL `https://shipmail.to/api/auth/oauth2/token`)

Rebind matching staged replacement files to a cancelled or failed uploaded-file import, then resume the same job from its durable cursor. Each replacement must match the original unfinished file by organization, mailbox, provider, format, exact size, sanitized name, and the versioned source fingerprint encoded in the object key. That fingerprint is a SHA-256 of file size plus bounded first and last samples, not a full-file hash. After the last required replacement is bound, the same import queues automatically.

## Path parameters

- `id` string, required
- `import_id` string, required

## Headers

- `X-Shipmail-Organization` string

## Request body

- RestoreMailboxImportRequest
  - `file_ids` string[], required: Staged replacement file IDs from createMailboxImportUpload. Restore can bind a subset and queue the same job after the last required replacement is bound. Send an empty list to resume when every required source is already present.

## Response `200`

The restored and queued import.

- MailboxImport
  - `object` 'import', required
  - `id` string, required
  - `mailbox_id` string, required
  - `kind` 'imap' | 'file', required
  - `provider` 'gmail' | 'outlook' | 'yahoo' | 'aol' | 'icloud' | 'fastmail' | 'zoho' | 'titan' | 'namecheap' | 'migadu' | 'gmx' | 'mail_com' | 'mailbox_org' | 'mxroute' | 'infomaniak' | 'ovh' | 'gandi' | 'imap' | 'takeout' | 'proton' | 'tuta' | 'file', required
  - `source_address` string, nullable, required
  - `status` 'queued' | 'running' | 'paused_throttle' | 'paused_quota' | 'completed' | 'failed' | 'cancelled' | 'undo_queued' | 'undoing' | 'undone' | 'undo_failed', required: paused_throttle means the source provider's daily download limit was reached; the import resumes automatically at resume_at. paused_quota means the destination mailbox is out of storage.
  - `status_detail` string, nullable, required
  - `error` string, nullable, required
  - `resume_at` string, date-time, nullable, required
  - `counts` object, required
    - `found` integer, required
    - `imported` integer, required
    - `undone` integer, required
    - `duplicates_skipped` integer, required
    - `oversize_skipped` integer, required
    - `failed` integer, required
    - `contacts_imported` integer, required
  - `bytes` object, required
    - `total` integer, required
    - `imported` integer, required
  - `created_at` string, date-time, required
  - `started_at` string, date-time, nullable, required
  - `completed_at` string, date-time, nullable, required
  - `folders` MailboxImportFolder[]: Per-folder progress. Returned by getMailboxImport only.
    - `source_folder` string, required
    - `target_folder` string, nullable, required
    - `role` string, nullable, required
    - `state` 'pending' | 'importing' | 'completed' | 'failed' | 'skipped', required: Transfer state of this source folder. "skipped" means the source server refused the folder; the import finished without it.
    - `found` integer, required
    - `imported` integer, required
    - `duplicates` integer, required
    - `oversize` integer, required
    - `failed` integer, required
  - `source_retention` MailboxImportSourceRetention
    - `state` 'available' | 'missing' | 'expired' | 'deleted' | 'not_applicable', required
    - `expires_at` string, date-time, nullable, required
    - `deleted_at` string, date-time, nullable, required

## Other responses

- `404`: Resource not found.
- `409`: Resource conflict.
- `422`: Validation failed.
- `429`: Rate limit exceeded.

---

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