dropbox

$npx mdskill add vm0-ai/vm0-skills/dropbox

Manage cloud storage by accessing Dropbox files and folders.

  • Retrieve account details, space usage, and folder contents.
  • Depends on Dropbox API endpoints for authentication and data.
  • Executes requests using bearer tokens and JSON payloads.
  • Returns structured data for file operations and status checks.
SKILL.md
.github/skills/dropboxView on GitHub ↗
---
name: dropbox
description: Dropbox API for file storage. Use when user mentions "Dropbox", "dropbox.com",
  shares a Dropbox link, "upload to Dropbox", or asks about cloud storage.
---

## Troubleshooting

If requests fail, run `zero doctor check-connector --env-name DROPBOX_TOKEN` or `zero doctor check-connector --url https://api.dropboxapi.com/2/users/get_current_account --method POST`

## User

### Get Current Account

```bash
curl -s -X POST "https://api.dropboxapi.com/2/users/get_current_account" \
  --header "Authorization: Bearer $DROPBOX_TOKEN"
```

### Get Space Usage

```bash
curl -s -X POST "https://api.dropboxapi.com/2/users/get_space_usage" \
  --header "Authorization: Bearer $DROPBOX_TOKEN"
```

## Files & Folders

### List Folder

Use `""` for root, or `/path/to/folder` for subfolders.

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/list_folder" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"\", \"recursive\": false, \"limit\": 100}"
```

### List Folder (Continue)

When `has_more` is true in the response, use the cursor to get more results.

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/list_folder/continue" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"cursor\": \"<cursor>\"}"
```

### Get Latest Cursor

Get a cursor for the current state without listing files. Useful for detecting changes later.

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/list_folder/get_latest_cursor" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"\", \"recursive\": true}"
```

### Get File/Folder Metadata

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/get_metadata" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"/Documents/report.pdf\"}"
```

### Search Files

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/search:2" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"query\": \"report\", \"options\": {\"max_results\": 20, \"file_status\": \"active\"}}"
```

### Search Continue

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/search/continue:2" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"cursor\": \"<cursor>\"}"
```

### Create Folder

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/create_folder:2" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"/New Folder\", \"autorename\": false}"
```

### Delete File or Folder

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/delete:2" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"/path/to/delete\"}"
```

### Permanently Delete

Requires Dropbox Business with permanent delete enabled.

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/permanently_delete" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"/path/to/delete\"}"
```

### Move File or Folder

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/move:2" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"from_path\": \"/old/file.txt\", \"to_path\": \"/new/file.txt\", \"autorename\": false}"
```

### Copy File or Folder

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/copy:2" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"from_path\": \"/source/file.txt\", \"to_path\": \"/dest/file.txt\", \"autorename\": false}"
```

### List File Revisions

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/list_revisions" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"/Documents/report.pdf\", \"limit\": 10}"
```

### Restore File to Revision

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/restore" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"/Documents/report.pdf\", \"rev\": \"<revision-id>\"}"
```

### Save URL to Dropbox

Download a URL directly into Dropbox.

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/save_url" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"/Downloads/file.pdf\", \"url\": \"https://example.com/file.pdf\"}"
```

### Get Tags

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/tags/get" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"paths\": [\"/Documents/report.pdf\"]}"
```

### Add Tag

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/tags/add" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"/Documents/report.pdf\", \"tag_text\": \"important\"}"
```

### Remove Tag

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/tags/remove" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"/Documents/report.pdf\", \"tag_text\": \"important\"}"
```

## Upload & Download

### Upload File (up to 150 MB)

```bash
curl -s -X POST "https://content.dropboxapi.com/2/files/upload" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Dropbox-API-Arg: {\"path\": \"/Documents/report.pdf\", \"mode\": \"add\", \"autorename\": true}" \
  --header "Content-Type: application/octet-stream" \
  --data-binary @report.pdf
```

`mode`: `add` (fail if exists), `overwrite`, `update` (with rev).

### Download File

```bash
curl -s -X POST "https://content.dropboxapi.com/2/files/download" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Dropbox-API-Arg: {\"path\": \"/Documents/report.pdf\"}" \
  -o report.pdf
```

### Get Temporary Download Link

```bash
curl -s -X POST "https://api.dropboxapi.com/2/files/get_temporary_link" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"/Documents/report.pdf\"}"
```

Returns a temporary link (4 hours) that doesn't require auth.

### Get Thumbnail

```bash
curl -s -X POST "https://content.dropboxapi.com/2/files/get_thumbnail:2" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Dropbox-API-Arg: {\"resource\": {\".tag\": \"path\", \"path\": \"/Photos/image.jpg\"}, \"format\": \"jpeg\", \"size\": \"w256h256\"}" \
  -o thumbnail.jpg
```

## Sharing

### Create Shared Link

```bash
curl -s -X POST "https://api.dropboxapi.com/2/sharing/create_shared_link_with_settings" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"/Documents/report.pdf\", \"settings\": {\"requested_visibility\": \"public\"}}"
```

Visibility: `public`, `team_only`, `password` (with `link_password`).

### List Shared Links

```bash
curl -s -X POST "https://api.dropboxapi.com/2/sharing/list_shared_links" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"/Documents/report.pdf\"}"
```

### Modify Shared Link

```bash
curl -s -X POST "https://api.dropboxapi.com/2/sharing/modify_shared_link_settings" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"url\": \"https://www.dropbox.com/s/xxx/file.pdf\", \"settings\": {\"requested_visibility\": \"team_only\"}}"
```

### Revoke Shared Link

```bash
curl -s -X POST "https://api.dropboxapi.com/2/sharing/revoke_shared_link" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"url\": \"https://www.dropbox.com/s/xxx/file.pdf\"}"
```

### Share Folder

```bash
curl -s -X POST "https://api.dropboxapi.com/2/sharing/share_folder" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"path\": \"/Shared Project\", \"acl_update_policy\": \"editors\"}"
```

### Add Folder Member

```bash
curl -s -X POST "https://api.dropboxapi.com/2/sharing/add_folder_member" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"shared_folder_id\": \"<folder-id>\", \"members\": [{\"member\": {\".tag\": \"email\", \"email\": \"user@example.com\"}, \"access_level\": {\".tag\": \"editor\"}}]}"
```

### List Folder Members

```bash
curl -s -X POST "https://api.dropboxapi.com/2/sharing/list_folder_members" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"shared_folder_id\": \"<folder-id>\"}"
```

### Remove Folder Member

```bash
curl -s -X POST "https://api.dropboxapi.com/2/sharing/remove_folder_member" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"shared_folder_id\": \"<folder-id>\", \"member\": {\".tag\": \"email\", \"email\": \"user@example.com\"}, \"leave_a_copy\": false}"
```

### List Shared Folders

```bash
curl -s -X POST "https://api.dropboxapi.com/2/sharing/list_folders" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"limit\": 100}"
```

## File Requests

### List File Requests

```bash
curl -s -X POST "https://api.dropboxapi.com/2/file_requests/list" \
  --header "Authorization: Bearer $DROPBOX_TOKEN"
```

### Create File Request

```bash
curl -s -X POST "https://api.dropboxapi.com/2/file_requests/create" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"title\": \"Upload receipts\", \"destination\": \"/File Requests/Receipts\", \"open\": true}"
```

### Get File Request

```bash
curl -s -X POST "https://api.dropboxapi.com/2/file_requests/get" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"id\": \"<file-request-id>\"}"
```

### Update File Request

```bash
curl -s -X POST "https://api.dropboxapi.com/2/file_requests/update" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"id\": \"<file-request-id>\", \"title\": \"Upload Q2 receipts\", \"open\": true}"
```

### Delete File Requests

```bash
curl -s -X POST "https://api.dropboxapi.com/2/file_requests/delete" \
  --header "Authorization: Bearer $DROPBOX_TOKEN" \
  --header "Content-Type: application/json" \
  -d "{\"ids\": [\"<file-request-id>\"]}"
```

### Count File Requests

```bash
curl -s -X POST "https://api.dropboxapi.com/2/file_requests/count" \
  --header "Authorization: Bearer $DROPBOX_TOKEN"
```

## Guidelines

1. **All POST**: Dropbox API uses POST for nearly everything, including reads. Don't use GET.
2. **Paths**: Start with `/` for absolute paths. Use `""` (empty string) for root in `list_folder`. Paths are case-insensitive but case-preserving.
3. **Base URLs**: Use `api.dropboxapi.com` for metadata operations, `content.dropboxapi.com` for file content (upload/download/thumbnail).
4. **Upload limit**: Simple upload supports up to 150 MB. For larger files, use upload sessions (`upload_session/start`, `append`, `finish`).
5. **Pagination**: When `has_more` is true, call the `*/continue` endpoint with the returned cursor.
6. **Rate limits**: Back off on 429 responses. Use `Retry-After` header.
7. **Shared links**: Use `create_shared_link_with_settings` (not deprecated `create_shared_link`).
8. **Batch operations**: `copy_batch`, `move_batch`, `delete_batch` are available for bulk operations.

## How to Look Up More API Details

- **Full API Reference**: https://www.dropbox.com/developers/documentation/http/documentation
- **Files**: https://www.dropbox.com/developers/documentation/http/documentation#files
- **Sharing**: https://www.dropbox.com/developers/documentation/http/documentation#sharing
- **File Requests**: https://www.dropbox.com/developers/documentation/http/documentation#file_requests
- **Users**: https://www.dropbox.com/developers/documentation/http/documentation#users
- **Paper**: https://www.dropbox.com/developers/documentation/http/documentation#paper
More from vm0-ai/vm0-skills