---
title: "Import a project ZIP archive"
method: POST
path: "/projects/{projectId}/import"
tags: ["Projects"]
---

# Import a project ZIP archive

`POST /projects/{projectId}/import`

Reconciles an existing project from the ZIP produced by project export. Before applying changes, Deepnote creates a version-history snapshot of the project's current notebook state, which can be used to restore notebooks to their pre-import state. Importing a notebook clears the outputs and execution state of all its blocks; notebooks omitted from a partial import are unchanged. Each `.deepnote` document must contain exactly one notebook from the target project and use the same project name and, when present, integration attachments. The project name and declared integration attachments are applied during import; changing the project name requires project rename permission. Notebooks are matched by document-facing id. Missing notebooks are left untouched unless `deleteMissingNotebooks=true`. Requirements are not imported.

## Path parameters

- `projectId` string, uuid, required

## Query parameters

- `baseModifiedAt` string, date-time — Structural version from the export this import is based on. The import returns 409 when the project structure has changed since this timestamp.
- `baseContentHash` string — Canonical lowercase SHA-256 hash of the exploded `.deepnote` documents.
- `deleteMissingNotebooks` 'true' | 'false' — Delete active project notebooks that are absent from the archive. Defaults to `false`, which leaves missing notebooks untouched.
- `force` 'true' | 'false' — Skip both lost-update checks and then import regardless of concurrent project changes. Defaults to `false`.

## Response `200`

Project notebooks reconciled

- ImportProjectResponse
  - `project` object, required
    - `id` string, uuid, required
    - `modifiedAt` string, date-time, required
    - `contentHash` string, required — Canonical lowercase SHA-256 hash of the exploded `.deepnote` documents.
  - `notebooks` object[], required
    - `id` string, required — Document-facing notebook id retained from the imported same-project document.
    - `name` string, required
    - `action` 'created' | 'overwritten' | 'restored' | 'deleted', required

## Other responses

- `400` — Validation error
- `401` — Unauthorized
- `403` — Insufficient permissions or notebook limit reached
- `404` — Project not found
- `409` — Project changed since the supplied base version or is suspended
- `413` — Archive or document too large
- `422` — Malformed archive or invalid `.deepnote` document structure
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/deepnote/apis/deepnote-public-api.md) · [All operations](https://skmtc.net/deepnote/apis/deepnote-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/deepnote/deepnote-public-api/revisions/726970fd2992/schema)
