Manage and optimize Lindy AI rate limits. Use when hitting rate limits, optimizing API usage, or implementing rate limit handling. Trigger with phrases like "lindy rate limit", "lindy quota", "lindy throttling", "lindy API limits".
/plugin marketplace add jeremylongshore/claude-code-plugins-plus-skills/plugin install lindy-pack@claude-code-plugins-plusThis skill is limited to using the following tools:
Comprehensive guide to understanding and managing Lindy API rate limits.
| Resource | Limit | Window |
|---|---|---|
| API Requests | 100/min | Rolling |
| Agent Runs | 50/day | Daily |
| Concurrent Runs | 2 | Instant |
| Resource | Limit | Window |
|---|---|---|
| API Requests | 1000/min | Rolling |
| Agent Runs | 1000/day | Daily |
| Concurrent Runs | 10 | Instant |
| Resource | Limit | Window |
|---|---|---|
| API Requests | Custom | Rolling |
| Agent Runs | Unlimited | - |
| Concurrent Runs | 100+ | Instant |
import { Lindy } from '@lindy-ai/sdk';
const lindy = new Lindy({ apiKey: process.env.LINDY_API_KEY });
async function checkUsage() {
const usage = await lindy.usage.current();
console.log('Current Usage:');
console.log(` API Requests: ${usage.apiRequests.used}/${usage.apiRequests.limit}`);
console.log(` Agent Runs: ${usage.agentRuns.used}/${usage.agentRuns.limit}`);
console.log(` Concurrent: ${usage.concurrent.active}/${usage.concurrent.limit}`);
return usage;
}
class RateLimiter {
private tokens: number;
private lastRefill: number;
private readonly maxTokens: number;
private readonly refillRate: number; // tokens per second
constructor(maxTokens: number, refillRate: number) {
this.maxTokens = maxTokens;
this.tokens = maxTokens;
this.refillRate = refillRate;
this.lastRefill = Date.now();
}
async acquire(): Promise<void> {
this.refill();
if (this.tokens < 1) {
const waitTime = (1 - this.tokens) / this.refillRate * 1000;
await new Promise(r => setTimeout(r, waitTime));
this.refill();
}
this.tokens -= 1;
}
private refill(): void {
const now = Date.now();
const elapsed = (now - this.lastRefill) / 1000;
this.tokens = Math.min(this.maxTokens, this.tokens + elapsed * this.refillRate);
this.lastRefill = now;
}
}
// Usage: 100 requests per minute
const limiter = new RateLimiter(100, 100 / 60);
async function rateLimitedRequest<T>(fn: () => Promise<T>): Promise<T> {
await limiter.acquire();
return fn();
}
async function withRetryOnRateLimit<T>(
fn: () => Promise<T>,
maxRetries = 5
): Promise<T> {
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
return await fn();
} catch (error: any) {
if (error.code === 'LINDY_RATE_LIMITED') {
const retryAfter = error.retryAfter || Math.pow(2, attempt);
console.log(`Rate limited. Retrying in ${retryAfter}s...`);
await new Promise(r => setTimeout(r, retryAfter * 1000));
continue;
}
throw error;
}
}
throw new Error('Max retries exceeded');
}
| Scenario | Strategy | Code |
|---|---|---|
| Near limit | Slow down | Reduce request rate |
| Hit limit | Wait | Respect Retry-After |
| Burst | Queue | Implement request queue |
class RequestQueue {
private queue: Array<() => Promise<void>> = [];
private processing = false;
private requestsThisMinute = 0;
private lastMinuteStart = Date.now();
async enqueue<T>(fn: () => Promise<T>): Promise<T> {
return new Promise((resolve, reject) => {
this.queue.push(async () => {
try {
resolve(await fn());
} catch (e) {
reject(e);
}
});
this.processQueue();
});
}
private async processQueue(): Promise<void> {
if (this.processing) return;
this.processing = true;
while (this.queue.length > 0) {
if (Date.now() - this.lastMinuteStart > 60000) {
this.requestsThisMinute = 0;
this.lastMinuteStart = Date.now();
}
if (this.requestsThisMinute >= 100) {
await new Promise(r => setTimeout(r, 1000));
continue;
}
const request = this.queue.shift()!;
this.requestsThisMinute++;
await request();
}
this.processing = false;
}
}
Proceed to lindy-security-basics for security configuration.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.