twitch-drops-api
A public API providing detailed information on Twitch drops and campaigns, including rewards, timelines, and game-specific details.
A public API for Twitch drops and campaigns
twitch-drops-api serves current Twitch drop and reward campaigns with detailed reward, timeline, and game information through a cached HTTP API.
What the API exposes
twitch-drops-api is a public API that provides detailed information about available Twitch Drops campaigns and reward campaigns. It returns data such as rewards, timelines, and game specific details so that other applications can show what is currently offerable on Twitch. The README describes two response styles. Legacy v1 endpoints return the typed payload arrays directly: a list of drop campaigns as TwitchDropCampaignType, and a list of reward campaigns as TwitchRewardCampaignType. Version 2 endpoints wrap the same data in a TwitchDropsApiV2ResponseType container, which adds freshness metadata alongside the array. Every endpoint is backed by the same Twitch data cache, and that cache is refreshed every 60 seconds, so responses stay current without hammering Twitch on every request. The project notes that the API is used by Twitch Alerts, a free Discord bot that notifies users when a streamer goes live and when drops are available for specific games or for all games, and it links to invitation pages for that bot. The repository shows 24 stars at the time of writing and the primary language is TypeScript. The homepage is the hosted API itself at twitch-drops-api.sunkwi.com. The design goal is narrow and clear: give downstream tools a stable, typed view of drops and rewards without each tool having to parse Twitch's own responses, and do it with a short cache so the data is both fresh and cheap to serve.
Endpoints and response formats
The endpoint layout is small and regular. Legacy v1 exposes /drops and /rewards, each returning the matching typed array directly. Those v1 responses also carry freshness through HTTP headers: X-Last-Updated-At with a timestamp and X-Refresh-Interval-Seconds set to 60. Version 2 exposes /v2/drops and /v2/rewards, and instead of bare arrays they return a JSON object with three fields: lastUpdatedAt, refreshIntervalSeconds, and data, where data has the same array shape as the matching v1 response. A client that only wants the list can read data and ignore the metadata, while a client that cares about staleness can use the wrapper. The README includes fetch examples in TypeScript for both styles, showing how to call the endpoint, check the response status, read the freshness headers or fields, and parse the typed payload. The examples make the contract concrete for a front end or a bot author. Because the v2 wrapper and the v1 array share the same underlying data shape, migrating from v1 to v2 is mostly a matter of unwrapping one field, which lowers the cost of adopting the newer format. The whole surface is read only and serves public campaign information, so there is no authentication described for the endpoints themselves in the README. Both versions share the 60 second refresh interval.
Response types and fields
The detailed response types are the heart of the project, and the README documents them as TypeScript type definitions. TwitchDropsApiV2ResponseType is a generic wrapper with lastUpdatedAt as a nullable string, refreshIntervalSeconds as a number, and data of the wrapped type. TwitchDropCampaignType carries endAt, gameBoxArtURL, gameDisplayName, gameId, and a rewards array. Each reward includes an id, account connection state, allow rules with channels and an enabled flag, account link URL, description, details URL, start and end times, event based and time based drops, required minutes watched, and nested benefit edges with entitlement limits and game information. TwitchRewardCampaignType carries type name, about URL, brand, ends and starts times, external URL, game, id, image, instructions, a sitewide flag, name, a rewards array, a reward value URL parameter, status, summary, and eligibility requirements with a minute watched goal and a subs goal. These definitions tell a consumer exactly which fields exist and what types they have, so generated clients and hand written parsers stay in sync with the API. The README does not declare a software license in its text, and the repository metadata lists no license, so anyone building on this API should confirm usage terms with the author before redistributing or hosting a modified version. Each reward entry also carries an imageURL and owner field.
Editorial conclusion
twitch-drops-api is implemented in TypeScript and was last updated on 2026-08-24, with 24 stars recorded on GitHub and no license declared in its metadata.
Community notes