Dropbox
Dropbox
Scan documents, spreadsheets, images, and Paper docs stored in a Dropbox account.
- Category
- Collaboration
- Source type
- DROPBOX
- Produces
- fileimageaudiovideoarchive
Dropbox holds the documents that get shared outside the company — contracts sent to counsel, files exchanged with vendors, the folder a departing employee still has a link to.
What you need to connect
A Dropbox app, and one of three credential shapes:
| Method | What you supply |
|---|---|
| OAuth | App key, app secret and a refresh token — the durable option |
| OAuth (PKCE) | App key and refresh token, no secret |
| Access token | A single short-lived token, easiest for a quick test |
For Dropbox Business, the same credential can scan the whole team: the team space, each member’s own folder, or a named list of members. Team-owned folders can be traversed with administrator privileges to reach content no individual member has mounted.
What Classifyre reads
Everything under the folder you choose — recursively if you want, including shared folders mounted into the account — filtered by extension.
Dropbox Paper docs have no downloadable file behind them, so they’re exported to Markdown and scanned as text.
Shared behaviour · File and object sources
Every object in the folder becomes one asset. What it is — a PDF, a spreadsheet, a screenshot, a video — is worked out from the bytes themselves, not from the file name, because storage systems routinely label everything as generic binary data. The full list of readable types is on File Formats.
Files hidden inside other files are pulled out and scanned in their own right: images embedded in a document, and every member of a ZIP, TAR, 7z or RAR archive. Images, audio and video need OCR and transcription switched on before their content can be read.
Large objects are streamed rather than loaded whole, so a multi-gigabyte file costs disk rather than memory, and only the part a sampling window asks for is read.
Files in Dropbox are read with the shared file pipeline: see Supported File Formats for everything it can open, and OCR & Transcription for reading text out of images, audio and video.
Metadata on every asset
Asset kind · file
| Field | Type | Always present | What it is |
|---|---|---|---|
| size_bytes | integer | Yes | Raw byte size of the content |
| mime_type | string | Yes | Resolved MIME type |
| parse_error | string | No | Set when content extraction failed |
| image_width | integer | No | Width in pixels |
| image_height | integer | No | Height in pixels |
| page_count | integer | No | Number of pages (pdf) |
| paragraph_count | integer | No | Number of paragraphs (docx) |
| table_count | integer | No | Number of tables (docx) |
| row_count | integer | No | Number of data rows |
| columns | object[] | No | Columns as {name, type} objects (type may be empty for csv/xlsx) |
| encoding | string | No | Detected character encoding |
| json_root_type | string | No | Root JSON type: object, array, or scalar |
| top_level_keys | integer | No | Number of top-level keys when the root is an object |
| array_length | integer | No | Length when the root is an array |
| provider | string | Yes | Storage provider label |
| object_key | string | Yes | Display path of the file inside the Dropbox account |
| etag | string | No | Dropbox content hash (changes only when the bytes change) |
| file_id | string | Yes | Immutable Dropbox file ID (id:...), stable across moves and renames |
| rev | string | No | Dropbox revision identifier of the scanned version |
| web_url | string | No | Browser-accessible Dropbox preview URL, when the API returns one |
| team_member_email | string | No | Email of the Dropbox Business team member whose namespace the file was scanned from |
| team_member_id | string | No | Dropbox Business team member ID used to reach the file |
| team_namespace | string | No | Namespace the file lives in: account, member_folder or team_folder |
| exported_as | string | No | Export MIME type used for non-downloadable files such as Paper docs |
| source_hash | string | No | Hash of the parent asset (embedded files and archive members only) |
| location | string | No | Location within the parent (embedded file location or archive member path) |
Asset kind · image
| Field | Type | Always present | What it is |
|---|---|---|---|
| size_bytes | integer | Yes | Raw byte size of the content |
| mime_type | string | Yes | Resolved MIME type |
| parse_error | string | No | Set when content extraction failed |
| image_width | integer | No | Width in pixels |
| image_height | integer | No | Height in pixels |
| provider | string | No | Storage provider label |
| object_key | string | No | Display path of the file inside the Dropbox account |
| etag | string | No | Dropbox content hash (changes only when the bytes change) |
| file_id | string | No | Immutable Dropbox file ID (id:...), stable across moves and renames |
| rev | string | No | Dropbox revision identifier of the scanned version |
| web_url | string | No | Browser-accessible Dropbox preview URL, when the API returns one |
| team_member_email | string | No | Email of the Dropbox Business team member whose namespace the file was scanned from |
| team_member_id | string | No | Dropbox Business team member ID used to reach the file |
| team_namespace | string | No | Namespace the file lives in: account, member_folder or team_folder |
| source_hash | string | No | Hash of the parent asset (embedded files and archive members only) |
| location | string | No | Location within the parent (embedded file location or archive member path) |
Asset kind · audio
| Field | Type | Always present | What it is |
|---|---|---|---|
| size_bytes | integer | Yes | Raw byte size of the content |
| mime_type | string | Yes | Resolved MIME type |
| parse_error | string | No | Set when content extraction failed |
| provider | string | Yes | Storage provider label |
| object_key | string | Yes | Display path of the file inside the Dropbox account |
| file_id | string | No | Immutable Dropbox file ID (id:...), stable across moves and renames |
| rev | string | No | Dropbox revision identifier of the scanned version |
| web_url | string | No | Browser-accessible Dropbox preview URL, when the API returns one |
| team_member_email | string | No | Email of the Dropbox Business team member whose namespace the file was scanned from |
| team_member_id | string | No | Dropbox Business team member ID used to reach the file |
| team_namespace | string | No | Namespace the file lives in: account, member_folder or team_folder |
| source_hash | string | No | Hash of the parent asset (embedded files and archive members only) |
| location | string | No | Location within the parent (embedded file location or archive member path) |
Asset kind · video
| Field | Type | Always present | What it is |
|---|---|---|---|
| size_bytes | integer | Yes | Raw byte size of the content |
| mime_type | string | Yes | Resolved MIME type |
| parse_error | string | No | Set when content extraction failed |
| provider | string | Yes | Storage provider label |
| object_key | string | Yes | Display path of the file inside the Dropbox account |
| file_id | string | No | Immutable Dropbox file ID (id:...), stable across moves and renames |
| rev | string | No | Dropbox revision identifier of the scanned version |
| web_url | string | No | Browser-accessible Dropbox preview URL, when the API returns one |
| team_member_email | string | No | Email of the Dropbox Business team member whose namespace the file was scanned from |
| team_member_id | string | No | Dropbox Business team member ID used to reach the file |
| team_namespace | string | No | Namespace the file lives in: account, member_folder or team_folder |
| source_hash | string | No | Hash of the parent asset (embedded files and archive members only) |
| location | string | No | Location within the parent (embedded file location or archive member path) |
Asset kind · archive
| Field | Type | Always present | What it is |
|---|---|---|---|
| size_bytes | integer | Yes | Raw byte size of the content |
| mime_type | string | Yes | Resolved MIME type |
| parse_error | string | No | Set when content extraction failed |
| provider | string | Yes | Storage provider label |
| object_key | string | Yes | Display path of the file inside the Dropbox account |
| etag | string | No | Dropbox content hash (changes only when the bytes change) |
| file_id | string | No | Immutable Dropbox file ID (id:...), stable across moves and renames |
| rev | string | No | Dropbox revision identifier of the scanned version |
| web_url | string | No | Browser-accessible Dropbox preview URL, when the API returns one |
| team_member_email | string | No | Email of the Dropbox Business team member whose namespace the file was scanned from |
| team_member_id | string | No | Dropbox Business team member ID used to reach the file |
| team_namespace | string | No | Namespace the file lives in: account, member_folder or team_folder |
| source_hash | string | No | Hash of the parent asset (embedded files and archive members only) |
| location | string | No | Location within the parent (embedded file location or archive member path) |
Lineage
Lineage
This source records no lineage. Nothing in the system it reads describes data moving from one place to another, so no FLOW edges are produced. Related items are still linked — see Lineage & Relationships for what those links mean and how they differ from lineage.
Worth knowing
- Team scans grow fast. Start with the team space or a handful of members before scanning everyone.
- Suspended members are excluded by default and can be included explicitly — their folders are often exactly the ones worth reviewing.
Configuration
Beyond the fields below, every source also has the settings shared by all of them: the sampling strategy, the detectors to run, the scan schedule, and the compute limits for its scan jobs.
Required
Without these, the source will not save.
This section depends on which authentication method you pick — one of the following applies.
Dropbox OAuth refresh token (recommended)
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| auth_method | "oauth" | Yes | — | — |
| app_key | string | Yes | Dropbox app key (App Console → Settings → App key) | — |
Dropbox OAuth with PKCE (no app secret)
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| auth_method | "oauth_pkce" | Yes | — | — |
| app_key | string | Yes | Dropbox app key (App Console → Settings → App key) | — |
Dropbox access token (short-lived, testing only)
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| auth_method | "access_token" | Yes | — | — |
Secrets
Stored encrypted and never shown again after you save them. See Configuration & Fields.
This section depends on which authentication method you pick — one of the following applies.
Dropbox OAuth
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| app_secret | string | Yes | Dropbox app secret (App Console → Settings → App secret) | — |
| refresh_token | string | Yes | Long-lived refresh token issued with token_access_type=offline | — |
Dropbox OAuth (PKCE)
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| refresh_token | string | Yes | Long-lived refresh token issued by the PKCE flow with token_access_type=offline | — |
Dropbox Access Token
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| access_token | string | Yes | Short-lived Dropbox access token (starts with sl.). Expires roughly four hours after it is generated. | — |
Optional
Everything you can tune. Sensible defaults apply when you leave them alone.
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| optional | object | No | —no extra properties | — |
| connection | object | No | Network and pagination controls for Dropbox API requests.no extra properties | — |
| connection.max_archive_member_bytes | integer | No | Maximum uncompressed bytes read from a single archive membermin 1024 | 10485760 |
| connection.max_archive_members | integer | No | Maximum member files expanded from one archive into child assets. Bounds fan-out, and is the guard against a zip bomb.min 1, max 10000 | 200 |
| connection.max_archive_total_bytes | integer | No | Maximum uncompressed bytes read across all members of one archive. The decompression-ratio ceiling: a zip bomb hits this before it hits memory.min 1024 | 104857600 |
| connection.max_embedded_files | integer | No | Maximum embedded files (parquet image/audio columns, office media) expanded from one container into child assets per runmin 1, max 10000 | 200 |
| connection.max_entries_per_page | integer | No | Maximum entries requested per list_folder callmin 1, max 2000 | 500 |
| connection.max_file_bytes | integer | No | Refuse any object larger than this many bytes. 0 or unset means no limit: an object above max_object_bytes is spooled to disk rather than held in memory, so file size is bounded by free disk, not by RAM.min 0 | — |
| connection.max_object_bytes | integer | No | Maximum bytes of one object held in memory. Larger objects are streamed to a temporary file (or read by byte range where the provider supports it), so this bounds memory rather than the size of file that can be scanned. See max_file_bytes to refuse large objects outright.min 1024 | 5242880 |
| connection.max_retries | integer | No | Maximum retries on transient Dropbox errors (5xx and rate limits)min 0, max 10 | 4 |
| connection.request_timeout_seconds | number | No | Network timeout in seconds for list/download operationsmin 1, max 300 | 60 |
| scope | object | No | Folder selection and content filtering.no extra properties | — |
| scope.exclude_extensions | array | No | Optional extension denylist | — |
| scope.exclude_extensions[] | string | No | — | — |
| scope.export_non_downloadable | boolean | No | Export files that have no direct download (Dropbox Paper docs) to Markdown so their text can be scanned | true |
| scope.folder_path | string | No | Folder to scan, for example /Finance/Exports. Leave empty to scan the whole account root. | — |
| scope.include_content_preview | boolean | No | Download file bytes to infer MIME and extract detector-ready text previews | true |
| scope.include_empty_objects | boolean | No | Include zero-byte files in extraction results | false |
| scope.include_extensions | array | No | Optional extension allowlist (for example, .pdf, .csv, .docx) | — |
| scope.include_extensions[] | string | No | — | — |
| scope.include_mounted_folders | boolean | No | Include shared folders mounted into the account | true |
| scope.include_object_metadata | boolean | No | Attach Dropbox metadata (content hash, size, revision, timestamps) to asset checksums | true |
| scope.recursive | boolean | No | Descend into subfolders of the selected folder | true |
| team | object | No | Dropbox Business team scanning. The credential shape is the same as for an individual account, but the Dropbox app must be created with a team access type ('Team member file access' plus 'Team information'). Leave disabled for individual accounts.no extra properties | — |
| team.as_admin | boolean | No | Traverse team-owned folders with a team administrator's privileges instead of acting as each member. Reaches content a member cannot list themselves and does not mark files as viewed by them. Requires at least one team admin on the team. | false |
| team.enabled | boolean | No | Scan the whole Dropbox Business team instead of a single account | false |
| team.include_member_folders | boolean | No | Scan each selected member's own Dropbox folder | true |
| team.include_suspended_members | boolean | No | Also scan members whose account is suspended | false |
| team.include_team_space | boolean | No | Scan the shared team folders in the team space | true |
| team.member_emails | array | No | Only scan these team members (empty = every active member) | — |
| team.member_emails[] | string | No | — | — |