> ## Documentation Index
> Fetch the complete documentation index at: https://docs.case.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Dropbox

> Personal accounts and team spaces, import and export

`provider: "dropbox"` · Import and export · Generally available

The Dropbox connector links a folder in a personal Dropbox or a team space to a vault, in either direction.

> [!NOTE]
>
> Check the `providers` array from `GET /connectors/v1/connections` before showing a Dropbox option
> in your UI. The only scope tier is `dropbox.readwrite`.

## Browsing

Browse with no parameters to get one item: the root of the connected account. For a team account it is the team space, named after the team; otherwise it is named `Dropbox`.

```json title="Root browse response" theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
{
  "items": [
    {
      "id": "3235641",
      "name": "Dropbox",
      "kind": "my_drive",
      "container_id": "3235641",
      "browse_ref": { "kind": "container", "container_id": "3235641" },
      "import_ref": { "folder_id": "dropbox:namespace-root", "container_id": "3235641" }
    }
  ]
}
```

Descend with the `browse_ref` fields. To import the whole account, use the root's `import_ref` as the link's `remote`.

Folder ids (`id:…`) are stable across renames and moves. A link's identity is the root `container_id` plus `folder_id`; the display `path` never participates, so moving or renaming the folder does not break the link.

## Importing a folder

```bash title="cURL" theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
curl -X POST https://api.case.dev/connectors/v1/transfer \
  -H "Authorization: Bearer $CASEDEV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "direction": "import",
    "connection_id": "conn_abc123",
    "remote": {
      "container_id": "3235641",
      "folder_id": "id:a4ayc_80_OEAAAAAAAAAXw",
      "path": "/Matters/Smith v. Hospital"
    },
    "vault_id": "vault_abc123"
  }'
```

Everything under the selected folder is imported recursively. Dropbox cloud documents that cannot be downloaded as files are imported through an export format Dropbox offers for them (for example `.docx`, PDF or Markdown).

## Finding folders

Besides browsing, Dropbox supports [search](https://docs.case.dev/connectors/transfers.md#search-instead-of-browsing) for files and folders across the account or inside a folder, [folder contents](https://docs.case.dev/connectors/transfers.md#preview-what-a-folder-will-import), [single-file fetch](https://docs.case.dev/connectors/transfers.md#fetch-one-file-instead-of-importing-a-folder), and [pasted shared links](https://docs.case.dev/connectors/transfers.md#open-a-pasted-folder-link). Search matches names; whether it also matches contents depends on the customer's Dropbox plan, so `full_text` is `false`.

A shared link resolves only when the folder is already in the connected account. Otherwise you get `422 link_not_in_account`: the user adds the shared folder in Dropbox, then retries.

## Change detection

Dropbox has a native change feed, so incremental runs are cheap. The cursor is bound to the linked folder. When Dropbox resets the cursor, or reports a deletion or a folder-structure change, the connector lists the whole folder again so deletions are detected by stable id.

Content identity is Dropbox's `content_hash`. Renames and moves update metadata **without re-downloading the file**.

## Export and two-way sync

Dropbox supports `direction: "export"` and `direction: "both"`. With `both`, exports default to a `CaseMark Output` subfolder under the import root, and that subfolder is excluded from the import side so exported files are never re-imported.

| `policy.collisions` | Behavior on a name collision |
| - | - |
| `version` (default) | Uploads with Dropbox's automatic renaming, so both files are kept |
| `overwrite` | Replaces the existing file, keeping Dropbox's revision history |
| `skip` | Leaves the existing file untouched |

Each exported file carries a Case.dev property, so a retry after a lost response finds the file it already uploaded instead of uploading a duplicate. Export never deletes anything in Dropbox.

## Rate budget

Dropbox allows 600 requests per minute. Because Dropbox serializes writes within an account, each connection runs one transfer at a time, and exports upload one file at a time. Imports download up to four files at once within that run.

## Reconnection

Dropbox refresh tokens do not expire until the user or Dropbox revokes them, so reconnection is rare.

## Capabilities at a glance

| | |
| - | - |
| Containers | Account root (personal Dropbox or team space) |
| Browse depth | Container → folder |
| Change detection | Native delta, with a full listing after a reset |
| Export / paired mode | Yes |
| Collection | `documents` |
| Scope tier | `dropbox.readwrite` |
| Rate budget | 600 requests/min, 1 concurrent run per connection |

## Next steps

> [card] [Import & Export](https://docs.case.dev/connectors/transfers.md)
>
> Link mechanics, policies, and progress

> [card] [Errors & Recovery](https://docs.case.dev/connectors/errors.md)
>
> Reauthorization, access loss, and throttling

> [card] [All providers](https://docs.case.dev/connectors/providers.md)
>
> Compare against the other supported providers


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.