From appfolio-pack
Throttles AppFolio API requests with Bottleneck (5 req/s) and retries 429 errors with exponential backoff. Useful for compliant API integrations.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin appfolio-packThis skill is limited to using the following tools:
AppFolio API enforces rate limits per partner. Implement throttling to stay within limits.
Generates typed TypeScript Axios client, response caching, pagination, and error handling patterns for AppFolio REST API integration.
Implements Apollo.io API rate limiting with sliding window limiter, backoff on 429s, and header parsing for per-endpoint minute/burst limits.
Manages Apify API rate limits using apify-client retries, batching, and PQueue for concurrency control to handle 429 errors and bulk operations.
Share bugs, ideas, or general feedback.
AppFolio API enforces rate limits per partner. Implement throttling to stay within limits.
import Bottleneck from "bottleneck";
const limiter = new Bottleneck({
maxConcurrent: 5,
minTime: 200, // 5 requests/second max
});
async function throttledRequest(client: any, path: string) {
return limiter.schedule(() => client.http.get(path));
}
// 429 retry
async function withRetry(fn: () => Promise<any>, maxRetries = 3) {
for (let i = 1; i <= maxRetries; i++) {
try { return await fn(); }
catch (err: any) {
if (err.response?.status !== 429 || i === maxRetries) throw err;
const delay = Math.min(1000 * Math.pow(2, i), 30000);
await new Promise(r => setTimeout(r, delay));
}
}
}