Overview
Add Dropbox to any ModuleX agent or workflow. Cloud file storage, sharing, and collaboration via the Dropbox HTTP API (api.dropboxapi.com/2).
Authentication
OAuth2 Authentication
Connect using Dropbox OAuth (recommended)Required Credentials
| Field | Description | Required | Format |
|---|---|---|---|
| Client ID | Dropbox OAuth App Client ID | Yes | xxxxxxxxxxxxxxx |
| Client Secret | Dropbox OAuth App Client Secret | Yes | xxxxxxxxxxxxxxx |
OAuth Configuration
- Authorization URL:
https://www.dropbox.com/oauth2/authorize - Token URL:
https://api.dropboxapi.com/oauth2/token - Scopes:
files.metadata.read,files.metadata.write,files.content.read,files.content.write,sharing.read,sharing.write,account_info.read
Available Actions
create_folder — Create a new folder in the user's Dropbox
create_folder — Create a new folder in the user's Dropbox
Parameters
true)Response
{
"$defs": {
"FileMetadata": {
"additionalProperties": false,
"description": "Metadata for a file or folder returned by the Dropbox API.",
"properties": {
".tag": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": ".Tag"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Id"
},
"path_display": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Display"
},
"path_lower": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Lower"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"rev": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rev"
},
"content_hash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Content Hash"
},
"server_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Server Modified"
},
"client_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Client Modified"
},
"is_downloadable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Is Downloadable"
}
},
"title": "FileMetadata",
"type": "object"
}
},
"additionalProperties": false,
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/FileMetadata"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"success"
],
"title": "CreateFolderOutput",
"type": "object"
}
search_files_folders — Search for files and folders by name or content
search_files_folders — Search for files and folders by name or content
Parameters
Response
{
"$defs": {
"FileMetadata": {
"additionalProperties": false,
"description": "Metadata for a file or folder returned by the Dropbox API.",
"properties": {
".tag": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": ".Tag"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Id"
},
"path_display": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Display"
},
"path_lower": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Lower"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"rev": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rev"
},
"content_hash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Content Hash"
},
"server_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Server Modified"
},
"client_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Client Modified"
},
"is_downloadable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Is Downloadable"
}
},
"title": "FileMetadata",
"type": "object"
},
"SearchMatch": {
"additionalProperties": false,
"description": "A single search result match.",
"properties": {
"match_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Match Type"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/FileMetadata"
},
{
"type": "null"
}
],
"default": null
}
},
"title": "SearchMatch",
"type": "object"
}
},
"additionalProperties": false,
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"matches": {
"items": {
"$ref": "#/$defs/SearchMatch"
},
"title": "Matches",
"type": "array"
},
"has_more": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Has More"
}
},
"required": [
"success"
],
"title": "SearchFileFoldersOutput",
"type": "object"
}
list_file_folders_in_a_folder — List all files and subfolders in a specified folder
list_file_folders_in_a_folder — List all files and subfolders in a specified folder
Parameters
true)false)false)true)Response
{
"$defs": {
"FileMetadata": {
"additionalProperties": false,
"description": "Metadata for a file or folder returned by the Dropbox API.",
"properties": {
".tag": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": ".Tag"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Id"
},
"path_display": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Display"
},
"path_lower": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Lower"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"rev": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rev"
},
"content_hash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Content Hash"
},
"server_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Server Modified"
},
"client_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Client Modified"
},
"is_downloadable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Is Downloadable"
}
},
"title": "FileMetadata",
"type": "object"
}
},
"additionalProperties": false,
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"entries": {
"items": {
"$ref": "#/$defs/FileMetadata"
},
"title": "Entries",
"type": "array"
},
"has_more": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Has More"
}
},
"required": [
"success"
],
"title": "ListFileFoldersOutput",
"type": "object"
}
delete_file_folder — Permanently delete a file or folder from Dropbox
delete_file_folder — Permanently delete a file or folder from Dropbox
Parameters
Response
{
"$defs": {
"FileMetadata": {
"additionalProperties": false,
"description": "Metadata for a file or folder returned by the Dropbox API.",
"properties": {
".tag": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": ".Tag"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Id"
},
"path_display": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Display"
},
"path_lower": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Lower"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"rev": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rev"
},
"content_hash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Content Hash"
},
"server_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Server Modified"
},
"client_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Client Modified"
},
"is_downloadable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Is Downloadable"
}
},
"title": "FileMetadata",
"type": "object"
}
},
"additionalProperties": false,
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/FileMetadata"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"success"
],
"title": "DeleteFileFolderOutput",
"type": "object"
}
move_file_folder — Move a file or folder to a different location in Dropbox
move_file_folder — Move a file or folder to a different location in Dropbox
Parameters
false)false)Response
{
"$defs": {
"FileMetadata": {
"additionalProperties": false,
"description": "Metadata for a file or folder returned by the Dropbox API.",
"properties": {
".tag": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": ".Tag"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Id"
},
"path_display": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Display"
},
"path_lower": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Lower"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"rev": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rev"
},
"content_hash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Content Hash"
},
"server_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Server Modified"
},
"client_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Client Modified"
},
"is_downloadable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Is Downloadable"
}
},
"title": "FileMetadata",
"type": "object"
}
},
"additionalProperties": false,
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/FileMetadata"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"success"
],
"title": "MoveFileFolderOutput",
"type": "object"
}
rename_file_folder — Rename a file or folder in Dropbox
rename_file_folder — Rename a file or folder in Dropbox
Parameters
false)false)Response
{
"$defs": {
"FileMetadata": {
"additionalProperties": false,
"description": "Metadata for a file or folder returned by the Dropbox API.",
"properties": {
".tag": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": ".Tag"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Id"
},
"path_display": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Display"
},
"path_lower": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Lower"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"rev": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rev"
},
"content_hash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Content Hash"
},
"server_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Server Modified"
},
"client_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Client Modified"
},
"is_downloadable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Is Downloadable"
}
},
"title": "FileMetadata",
"type": "object"
}
},
"additionalProperties": false,
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/FileMetadata"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"success"
],
"title": "RenameFileFolderOutput",
"type": "object"
}
create_a_text_file — Create a new text file from plain text content
create_a_text_file — Create a new text file from plain text content
Parameters
Response
{
"additionalProperties": false,
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Id"
},
"path_display": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Display"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"rev": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rev"
},
"content_hash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Content Hash"
}
},
"required": [
"success"
],
"title": "CreateTextFileOutput",
"type": "object"
}
create_or_append_to_a_text_file — Append a line to an existing text file, or create the file if it does not exist
create_or_append_to_a_text_file — Append a line to an existing text file, or create the file if it does not exist
Parameters
Response
{
"additionalProperties": false,
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Id"
},
"path_display": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Display"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"rev": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rev"
},
"content_hash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Content Hash"
}
},
"required": [
"success"
],
"title": "CreateOrAppendToTextFileOutput",
"type": "object"
}
create_update_share_link — Create or update a public share link for a file or folder
create_update_share_link — Create or update a public share link for a file or folder
Parameters
false)Response
{
"additionalProperties": false,
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Url"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"path_lower": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Lower"
},
"link_permissions": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Link Permissions"
}
},
"required": [
"success"
],
"title": "CreateUpdateShareLinkOutput",
"type": "object"
}
list_shared_links — List shared links for a file or folder path
list_shared_links — List shared links for a file or folder path
Parameters
Response
{
"$defs": {
"SharedLinkInfo": {
"additionalProperties": false,
"description": "Metadata for a shared link.",
"properties": {
"url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Url"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"path_lower": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Lower"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Id"
},
"expires": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Expires"
},
"link_permissions": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Link Permissions"
}
},
"title": "SharedLinkInfo",
"type": "object"
}
},
"additionalProperties": false,
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"links": {
"items": {
"$ref": "#/$defs/SharedLinkInfo"
},
"title": "Links",
"type": "array"
}
},
"required": [
"success"
],
"title": "ListSharedLinksOutput",
"type": "object"
}
get_shared_link_metadata — Get metadata for a shared link URL
get_shared_link_metadata — Get metadata for a shared link URL
Parameters
Response
{
"additionalProperties": false,
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Url"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"path_lower": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Lower"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Id"
},
"link_permissions": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Link Permissions"
}
},
"required": [
"success"
],
"title": "GetSharedLinkMetadataOutput",
"type": "object"
}
list_file_revisions — List revision history for a file
list_file_revisions — List revision history for a file
Parameters
Response
{
"$defs": {
"FileMetadata": {
"additionalProperties": false,
"description": "Metadata for a file or folder returned by the Dropbox API.",
"properties": {
".tag": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": ".Tag"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Id"
},
"path_display": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Display"
},
"path_lower": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path Lower"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"rev": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rev"
},
"content_hash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Content Hash"
},
"server_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Server Modified"
},
"client_modified": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Client Modified"
},
"is_downloadable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Is Downloadable"
}
},
"title": "FileMetadata",
"type": "object"
}
},
"additionalProperties": false,
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"entries": {
"items": {
"$ref": "#/$defs/FileMetadata"
},
"title": "Entries",
"type": "array"
},
"is_deleted": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Is Deleted"
}
},
"required": [
"success"
],
"title": "ListFileRevisionsOutput",
"type": "object"
}
Limits & Quotas
- Rate limits: Dropbox applies per-app and per-user rate limits. Individual apps are limited to approximately 25,000 HTTP requests per month for free-tier apps and higher for production apps.
- List folder: Maximum 2,000 entries per single request (pagination via cursor for more).
- File upload: Maximum 150 MB per single upload request (content upload endpoint).
- Error model: Non-2xx responses are caught and returned as
success=False+errorrather than raising. Plan for retries on 429 (rate limit) responses.