spatie/dropbox-api
A minimal PHP client for Dropbox API v2, providing just the methods needed for the flysystem-dropbox adapter. Create folders, list contents, and generate temporary links with a simple authorization token.
Build vs. buy: Ships a working Dropbox API v2 client so you don't spend engineering cycles on HTTP plumbing, error mapping, and endpoint wiring. It's MIT-licensed, maintained by Spatie (a well-known Laravel/PHP shop), has an active release cadence (1.20 → 1.25 with Dependabot and PHP 8.2–8.5 CI coverage), and a changelog that shows responsiveness to real-world bugs (chunked-upload infinite loop fix in 1.25.0, empty-content upload sessions in 1.24.1).
Feature scoping: The package is deliberately minimal — "only the methods needed for our flysystem-dropbox adapter." That tells you exactly what you're buying: folders, listing, upload/download, move/copy, temporary links, shared links, chunked upload sessions, account info, token revoke. If your feature is "save customer invoices/exports to Dropbox," it's covered. If your feature is a full Dropbox filesystem with caching and stream abstraction, you want spatie/flysystem-dropbox on top of it (or the official Dropbox SDK).
Roadmap / integration sequencing: Because arbitrary endpoints are reachable via rpcEndpointRequest() and contentEndpointRequest() (with subdomain:: prefixing), you can prototype a Dropbox-backed feature in a day and unblock a roadmap item without waiting on a vendor integration project. Use it to validate demand before investing in a more elaborate storage abstraction.
Use cases to prioritize: customer-triggered file exports/deliverables, backup of generated documents, importing user-supplied files from Dropbox into your app, share-link generation for client deliverables, and Business-account/team-namespace scenarios (namespace ID support landed in 1.21.0).
Auth model as a product constraint: Token handling is pluggable (TokenProvider interface, or [$appKey, $appSecret], or no auth for public endpoints). This determines whether you can ship "connect your Dropbox account" self-serve onboarding (short-lived tokens + refresh) or must settle for a single-token, single-account integration. That's an important scoping decision to make explicitly rather than discover mid-build.
Risk/roadmap note: 307 stars and zero dependents listed is a modest footprint signal. Treat it as a thin, replaceable adapter — isolate it behind your own interface so swapping to the official Dropbox SDK or a different provider is a contained change, not a rewrite.
Adopt when:
rpcEndpointRequest/contentEndpointRequest escape hatch saves you from forking.Look elsewhere or layer up when:
TokenProvider implementation. If nobody owns that, budget for it or reconsider.For executives: This is a small, free, MIT-licensed PHP library that lets our Laravel application talk to Dropbox. It's maintained by Spatie, a reputable PHP vendor, with a steady release history and active PHP-version support. Adopting it means our Dropbox capability is a low-cost build — days, not months — with no licensing fees and no vendor lock-in. The tradeoff is that it's a thin open-source package with no commercial support, so we'll isolate it behind our own interface to keep it swappable.
For engineering: Minimal, focused client for Dropbox API v2 with a sensible method surface (upload/download, list, move, temporary and shared links, chunked upload sessions, account info, token revoke). Pluggable auth via TokenProvider — supports static tokens, app key/secret, OAuth refresh flows, and unauthenticated public endpoints. Escape hatches for unwrapped endpoints via rpcEndpointRequest/contentEndpointRequest, including subdomain and namespace targeting for Business accounts. MIT licensed, Dependabot-maintained, PHP 8.3–8.5 in CI. Caveats: no Laravel service provider (plain new Client(...)), no filesystem abstraction — pair with spatie/flysystem-dropbox if needed — and the maintainers explicitly scope the package to their Flysystem adapter's requirements, so expect to add methods or rely on the generic endpoints for edge cases. Wrap it in our own adapter so a swap to the official SDK stays cheap.
How can I help you explore Laravel packages today?