Dropbox
The Dropbox integration lets Helios agents work with files, folders, sharing, file requests, Paper docs, and Dropbox teams through the Dropbox API, and run agents automatically when files are added or changed, folders are created, items are deleted, or team members change.
What your agents can do
Agents use your connected Dropbox account to work with files, folders, sharing, and team resources.
- Search for files, list folders, and read file versions, tags, and custom properties
- Download a file to read or summarize it, export Paper docs and Google files, and get previews and thumbnails
- Upload files, including large files in upload sessions, and save a file from a public URL
- Create folders, move, copy, rename, tag, lock, and delete files and folders, and restore an earlier version
- Share files and folders, create shared links, and create file requests
- With a team app, manage members, groups, team folders, legal holds, and devices, and read the team's activity log
The agent's API tool reaches api.dropboxapi.com and the upload and download host content.dropboxapi.com. It sends or receives files up to 16 MB in one call. For a larger upload, the agent uses an upload session and sends the file in parts.
Authentication
| Method | Type | Description |
|---|---|---|
| Your own Dropbox OAuth app | OAuth 2.0 | A scoped app that acts as the Dropbox account that approves it |
| Your own Dropbox team app | OAuth 2.0 | A scoped app with team scopes that a team admin approves for the whole team |
Dropbox doesn't issue long-lived API keys, so Helios connects through an app that you own. Both methods use a scoped app that you create in the Dropbox App Console. See Integration authentication for how credentials are stored and injected.
Helios doesn't ask for scopes. Dropbox gives the token every scope turned on in the app's Permissions tab, so the app's scopes decide what agents can do. Turning on any team scope links the app to a whole team instead of one account. Use a separate app for each method.
For full access, turn on every scope on the Permissions tab that the method can use:
| Scope | What it unlocks | Method |
|---|---|---|
account_info.read | The connection check, account details, and space usage | Both |
account_info.write | Changing the profile photo | Both |
files.metadata.read | Listing, searching, and reading file details, versions, tags, and properties. Triggers need it | Both |
files.metadata.write | Adding and removing tags and custom properties | Both |
files.content.read | Downloading, exporting, previews, thumbnails, temporary links, and Content Processing | Both |
files.content.write | Uploading, creating folders, moving, copying, deleting, restoring, locking, and saving from a URL | Both |
sharing.read | Reading shared links, shared folders, and their members | Both |
sharing.write | Sharing files and folders, creating and changing shared links, and changing members | Both |
file_requests.read | Listing file requests | Both |
file_requests.write | Creating, changing, and deleting file requests | Both |
contacts.write | Removing contacts that were added by hand | Both |
contacts.read | Reading contacts. The App Console offers it, but no endpoint in the API reference needs it | Both |
team_info.read | The team connection check, team details, features, and reports | Team app |
team_data.member | Acting as a team member. Dropbox requires it for every member call | Team app |
team_data.content.read | Listing team folders | Team app |
team_data.content.write | Creating, renaming, archiving, and deleting team folders | Team app |
team_data.governance.write | Legal holds | Team app |
files.team_metadata.write | Custom property templates for the team | Team app |
files.permanent_delete | Permanently deleting files and folders | Team app |
members.read | Listing members and their details. Team member triggers need it | Team app |
members.write | Adding, suspending, and changing members | Team app |
members.delete | Removing and recovering members | Team app |
groups.read | Listing groups and their members | Team app |
groups.write | Creating, changing, and deleting groups | Team app |
sessions.list | Listing members' devices and linked apps | Team app |
sessions.modify | Signing out devices and unlinking apps | Team app |
events.read | Reading the team's activity log | Team app |
Through a team app, the account scopes in the first rows apply when an agent acts as a team member.
A connection keeps the scopes that were turned on when it was approved. If you turn on a scope later, open the connection in Helios, click Re-connect, and approve again. Until then, calls that need the new scope fail with missing_scope.
Your own Dropbox OAuth app
Any Dropbox account can create an app in the App Console. Dropbox doesn't allow the word "Dropbox" in an app's name.
-
In the Dropbox App Console, click Create app. Choose Scoped access, then Full Dropbox. Choose App folder instead to keep agents and triggers inside one folder. Some calls, such as tags, file locks, and contacts, don't work in an App folder app.
-
On the app's Permissions tab, turn on every scope marked Both in the table above, then click Submit. Leave every team scope off.
-
On the Settings tab, add this URL under Redirect URIs:
https://api.heliosapp.com/integrations/dropbox/oauth_callback -
In Helios, choose Your own Dropbox OAuth app. Enter the App Key and App Secret from the Settings tab.
-
Save, then approve access in Dropbox.
A new app is in development status. It can link only your own account until you click Enable additional users on the Settings tab. A development app can link up to 500 accounts. Once it links 50, Dropbox gives you two weeks to apply for production status before it stops linking new accounts.
Dropbox records changes made with the token as the account that approved the app. A separate Dropbox account for Helios keeps the agent's changes apart from yours.
Your own Dropbox team app
You need a Dropbox team plan, and a team admin approves the app. The connection reaches every member's Dropbox, so give it only to workflows you trust with the whole team.
-
In the Dropbox App Console, click Create app. Choose Scoped access, then Full Dropbox.
-
On the app's Permissions tab, turn on every scope in the table above, including
team_data.member, then click Submit. -
On the Settings tab, add this URL under Redirect URIs:
https://api.heliosapp.com/integrations/dropbox/oauth_callback -
In Helios, choose Your own Dropbox team app. Enter the App Key and App Secret from the Settings tab.
-
Save. A team admin then approves access in Dropbox for the team.
A new app is in development status and links only one team. To link more, click Enable additional teams on the app's page in the App Console.
The token belongs to the team, not to the admin who approved it. To work in a member's files, the agent first lists the members with team/members/list_v2, then sends the member's ID in the Dropbox-API-Select-User header. To work in the team space or a team folder, it also sends the Dropbox-API-Path-Root header.
Triggers
Dropbox can start a Workflow when something changes. Dropbox only lets you set webhook URLs in the App Console, so you set it up by hand after you connect. Dropbox sends every change to the URL, so there are no events to choose.
- In Helios, open the connection and click Manage, or Set up webhook on the connection card. Webhook Setup shows the webhook URL and the secret field. Copy the URL.
- Don't change the Webhook Secret field. Dropbox signs notifications with your app secret, and Helios puts it in this field when you connect. A different value makes Helios reject the notifications.
- In the App Console, open your app's Settings tab and add the URL in the Webhooks section. Dropbox checks the URL right away.
To stop events, remove the URL in the App Console. Deleting the connection in Helios doesn't remove it.
| Event | Description | Filters |
|---|---|---|
file.created | A file was added at a new path | path (pattern) |
file.updated | A new version of an existing file was saved | path (pattern) |
folder.created | A folder was created, or moved to a new path | path (pattern) |
item.deleted | A file or folder was deleted or moved away | path (pattern) |
team_member.changed | A team member was invited, removed or changed | none |
- Which connection gets which events: a connection through Your own Dropbox OAuth app gets the file and folder events. A connection through Your own Dropbox team app gets
team_member.changed, and needsmembers.readfor it. Helios doesn't read the file changes of a team's members, so the trigger picker shows the file and folder events as unavailable on a team connection. Connect a member's account with Your own Dropbox OAuth app to watch their files. - New or changed file: Dropbox reports a new file and a changed file the same way. Helios asks Dropbox whether the path had an earlier version.
file.createdmeans the path had none, andfile.updatedmeans it had one. A file uploaded where a deleted file used to be counts asfile.updated. So does a file that was added and then changed again before Helios read the change. - Moves and deletions: a move or rename shows up as
item.deletedat the old path andfile.createdorfolder.createdat the new one. Dropbox reports a deleted file and a deleted folder the same way, soitem.deletedcovers both. - Team members: Dropbox reports an invite, a join, a removal, and a change to a member's profile or permissions the same way, so
team_member.changedcovers all of them. - Path is optional. It matches the item's full path and ignores case.
/Invoices/*matches the items directly in Invoices,/Invoices/**matches everything under it, and**/*.pdfmatches every PDF. - The payload of a file or folder event is the item's metadata from Dropbox. Files carry their name, path, ID, size, revision, and modification time, plus
previous_rev, the revision before this one at the same path ornull. Deletions carry only the name and path.team_member.changedcarries theteam_idand themember_idthat changed. - In a Dropbox team account, Helios watches the member's own folders, not the team space.
Notifications are verified with the HMAC-SHA256 X-Dropbox-Signature header.
Dropbox disables a webhook that fails more than 35 times in 10 minutes with a failure rate above 4.5%, and emails the app's owner. To turn it back on, open the Webhooks section in the App Console.
An agent that uploads, creates, moves, renames, or deletes an item under a watched path starts another run, and so does an agent that saves a file from a URL there. An agent that changes a team member starts another team_member.changed run. Keep the agent's results in a folder that the path filter doesn't match, or say in the prompt which items to ignore. See Guarding against events you don't want.
Check that it works
- The connection: after you approve access, the connection's status shows Connected. Error means Dropbox rejected the token. See Common errors.
- The webhook: in the App Console, the URL is listed in the Webhooks section of the app's Settings tab, with the status Enabled.
- A trigger:
- Add
file.createdto a workflow with no filters. On a team connection, useteam_member.changed. - Add a file to the connected Dropbox, or invite someone to the team.
- Check that a run starts. Then open the connection in Helios and click Webhook events to see the event.
- Add
Common errors
| What you see | Cause | Fix |
|---|---|---|
| The connection's status shows Error | The account unlinked the app in Dropbox, or the app was deleted | Open the connection and click Re-connect |
Access token not found. Please complete the OAuth flow first. | The approval in Dropbox wasn't finished | Open the connection and click Re-connect |
Dropbox linked the app to a whole team because it has team scopes… | The app for Your own Dropbox OAuth app has a team scope turned on | Turn off the team scopes and connect again, or connect with Your own Dropbox team app |
Dropbox linked the app to one account instead of a team… | The app for Your own Dropbox team app has no team scopes | Turn on the team scopes, click Submit, and connect again |
Dropbox shows a redirect_uri error during approval | The redirect URL isn't in the app's Redirect URIs | Add https://api.heliosapp.com/integrations/dropbox/oauth_callback on the Settings tab |
| Another account can't approve the app | The app is in development status and only links your account | Click Enable additional users on the app's Settings tab |
Your app … is not permitted to access this endpoint because it does not have the required scope '…' | The scope is off on the app's Permissions tab | Turn it on, click Submit, then click Re-connect on the connection |
missing_scope | The scope was turned on after the connection was approved | Click Re-connect on the connection and approve again |
This API function operates on a single Dropbox account… on a team connection | The call has no Dropbox-API-Select-User header | Ask the agent to list the members first and act as one of them |
401 on a team connection's member call | The member ID in Dropbox-API-Select-User isn't on the team | Ask the agent to list the members again |
| The trigger picker shows events as unavailable | The connection's method doesn't get those events, or the app lacks files.metadata.read or members.read | Use the method that gets the event, or turn on the scope and click Re-connect |
| No run starts after a change | The webhook URL isn't in the App Console, Dropbox disabled it, the change is outside the app folder, or the path filter doesn't match | Add the URL or turn it back on in the Webhooks section, then test with no filters |
Limits
Dropbox doesn't publish exact rate limits. A call over a limit fails with 429 and a Retry-After header that says how many seconds to wait. Limits apply to each linked account, to the team for team calls, and to the member for calls made as a member. See the Dropbox performance guide.
Some Dropbox team plans also limit the number of upload calls each month. See the data transport limit.
Last updated on
Discord
The Discord integration lets Helios agents interact with Discord to read/send messages, manage channels, automate community interactions and much more.
The Reddit integration lets Helios agents manage subreddits, post content, moderate communities, track submissions and comments, and work with Reddit's platform directly.