{"id":13349,"plugin_id":"plugin_asdk_app_6a79c45722208191816dac268a720cb5","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:07:19.964Z","digest":"8742068256df5ff0915b95967d4aa1b31fd090710321857d4c748638be64ecd3","against":null,"payload":{"name":"upstash-ratelimit-js","description":"Rate limiting for serverless and edge apps with the @upstash/ratelimit TypeScript/JavaScript SDK backed by Upstash Redis. Use when adding a rate limiter or throttling to an API route, Next.js middleware, Vercel Edge, Cloudflare Workers, or any HTTP endpoint; returning 429 Too Many Requests; choosing between fixed window, sliding window, and token bucket algorithms; limiting per user, IP, API key, or tenant with prefixes and custom keys; protecting login, signup, form, or AI endpoints from abuse, bots, and brute force; using deny lists, ephemeral caching, analytics, timeouts, and multi-region rate limits; or estimating the Redis command cost of rate limiting. Also use when the user says rate limit, rate-limiting, throttle, quota, request limits, or traffic protection.","included_files":[{"relative_path":"algorithms.md","size_in_bytes":2736},{"relative_path":"features.md","size_in_bytes":3196},{"relative_path":"methods-getting-started.md","size_in_bytes":1947},{"relative_path":"pricing-cost.md","size_in_bytes":4737},{"relative_path":"traffic-protection.md","size_in_bytes":2360}],"skill_md_contents":"---\nname: upstash-ratelimit-js\ndescription: Rate limiting for serverless and edge apps with the @upstash/ratelimit TypeScript/JavaScript SDK backed by Upstash Redis. Use when adding a rate limiter or throttling to an API route, Next.js middleware, Vercel Edge, Cloudflare Workers, or any HTTP endpoint; returning 429 Too Many Requests; choosing between fixed window, sliding window, and token bucket algorithms; limiting per user, IP, API key, or tenant with prefixes and custom keys; protecting login, signup, form, or AI endpoints from abuse, bots, and brute force; using deny lists, ephemeral caching, analytics, timeouts, and multi-region rate limits; or estimating the Redis command cost of rate limiting. Also use when the user says rate limit, rate-limiting, throttle, quota, request limits, or traffic protection.\nlicense: MIT\nmetadata:\n  author: Upstash\n  homepage: https://upstash.com\n---\n\n# Rate Limit TS SDK\n\n## Quick Start\n- Install the SDK and connect to Redis.\n- Create a rate limiter and apply it to incoming operations.\n\nExample:\n```ts\nimport { Ratelimit } from \"@upstash/ratelimit\";\nimport { Redis } from \"@upstash/redis\";\n\nconst redis = new Redis({ url: \"<url>\", token: \"<token>\" });\nconst limiter = new Ratelimit({ redis, limiter: Ratelimit.slidingWindow(5, \"10s\") });\n\nconst { success } = await limiter.limit(\"user-id\");\nif (!success) {\n  // throttled\n}\n```\n\n## Other Skill Files\n- **algorithms.md**: Describes all available rate‑limiting algorithms and how they behave.\n- **pricing-cost.md**: Explains pricing, Redis cost implications, and operational considerations.\n- **features.md**: Lists SDK features such as prefixes, custom keys, and behavioral options.\n- **methods-getting-started.md**: Full method reference for the SDK's API and getting started guide.\n- **traffic-protection.md**: Guidance on applying rate limiting for traffic shaping, abuse prevention, and protection patterns.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}