API usage guidelines
The public API is free to use, with no key required. If you're displaying Plumb scores on your own site, here's what we ask in return.
Caching
A package is re-evaluated on its scan cadence (daily for most tiers) but its deep data is only re-fetched when the source actually changes; identical results coalesce, so last_checked_at advances while results_changed_at marks the last real change. Requesting a package's score more often returns the same result — please cache responses for at least 24 hours rather than fetching on every page view.
If you just need a visual badge, embed the SVG endpoints directly (see the "For Maintainers" section on any package page) — they're small, cacheable images and don't count against the JSON API's rate limits below.
Rate limits
Limits are enforced per IP address.
| Endpoint | Limit |
|---|---|
Read endpoints (GET) |
120 requests per minute |
Scan trigger (POST) |
3 requests per 15 minutes · 30 per day |
Plumb reserves the right to block requests or IP addresses that abuse these limits.
Attribution
You're welcome to display Plumb scores publicly — that's what the API is for. In return, any public display of a score must include clear, prominent attribution near the score: the phrase "Powered by Plumb", with "Plumb" linked back to either the Plumb homepage or, preferably, the package's own Plumb page.
Powered by <a href="https://plumb.dev/vendor/name">Plumb</a>
For endpoint details, request/response shapes, and to try requests live, see the API reference.