dropbox
$
npx mdskill add vm0-ai/vm0-skills/dropboxManage 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
- account-reconciliationPerform account reconciliations comparing general ledger balances against subledgers, bank statements, or external records. Use for bank reconciliation, GL-to-subledger reconciliation, intercompany reconciliation, balance sheet reconciliation, reconciling item analysis, outstanding item aging, or clearing open items.
- agentphoneBuild AI phone agents with AgentPhone API. Use when the user wants to make phone calls, send/receive SMS, manage phone numbers, create voice agents, set up webhooks, or check usage — anything related to telephony, phone numbers, or voice AI.
- ahrefsAhrefs SEO API for backlink and keyword analysis. Use when user mentions
- amplitudeAmplitude product analytics API. Use when user mentions "Amplitude",
- analysis-qaQuality-check a data analysis before sharing — verify joins, aggregations, denominators, time ranges, and metric definitions. Detect pitfalls like survivorship bias, average-of-averages, join explosion, timezone mismatches, incomplete periods, and selection bias. Includes documentation templates for reproducible analyses.
- anthropic-managed-agentsAnthropic Managed Agents API for programmatically creating, running, and streaming AI agents on Anthropic's cloud infrastructure. Use when the user mentions "Managed Agents", "Anthropic agent sessions", or needs to create/run/stream an Anthropic agent with tool use (bash, git, web), attach GitHub repositories, or inject secrets via Vault. Do NOT use for standard Claude Messages API — use the Claude API skill instead.
- apifyApify web scraping platform. Use when user mentions "scrape website",
- asanaAsana API for tasks and projects. Use when user mentions "Asana", "asana.com",
- atlassianAtlassian API for Confluence and Jira. Use when user mentions "Confluence
- attioAttio REST API for AI-native CRM operations — manage companies, people, deals, and custom objects, plus notes, tasks, lists, and comments. Use when the user mentions "Attio", "CRM record", "create company", "add person", "list entry", "CRM note", or "CRM task".