Handle Clay rate limits, webhook throttling, and credit pacing strategies.

MITAuto-check passedBackend & APIs

Install Clay Rate Limits

skills CLI
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill clay-rate-limits -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jeremylongshore/tons-of-skills-marketplace clay-rate-limits --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.curated/clay-rate-limits .claude/skills/clay-rate-limits && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
clay-rate-limits
GitHub stars
2.8k
Token cost
~2.2k tokens
SKILL.md length
397 words
Files
1
Skills in repo
3,342
Repo updated
First seen
Licence
MIT

At a glance

Handle Clay rate limits, webhook throttling, and credit pacing strategies.

  • Works in 5 steps: Understand Clay Rate Limit Tiers → Implement Webhook Rate Limiting → Handle 429 Responses with Backoff → …
  • Hitting 429 errors
  • SKILL.md covers Overview, Prerequisites, Instructions and Error Handling, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Clay Rate Limits is an agent skill from jeremylongshore/tons-of-skills-marketplace. Handle Clay rate limits, webhook throttling, and credit pacing strategies. Use when hitting 429 errors, managing webhook submission rates, or optimizing throughput within Clay's plan limits. Trigger with phrases like "clay rate limit", "clay throttling", "clay 429", "clay slow", "clay records per hour".

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Designed for Claude Code

It sits in Backend & APIs, covering Rate limiting and Webhooks. The repository describes itself as: Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com. The licence is MIT.

When your agent uses it

  • Hitting 429 errors
  • Managing webhook submission rates
  • Optimizing throughput within Clays plan limits
  • With phrases like clay rate limit

Example prompts

  • “s plan limits. Trigger with phrases like”
  • “clay throttling”
  • “clay 429”
  • “/clay-rate-limits”

Requirements

  • Compatibility (from SKILL.md): Designed for Claude Code
  • Pre-approved tools (allowed-tools): Read, Write, Edit, Bash(curl:*)

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Understand Clay Rate Limit Tiers
  2. Implement Webhook Rate Limiting
  3. Handle 429 Responses with Backoff
  4. Manage Webhook Lifecycle
  5. Enrichment Provider Rate Limits

What it can do on your machine

Read from SKILL.md and the folder at commit cfae287. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Bash(curl:*)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • university.clay.com
    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Designed for Claude Code

    From compatibility in the SKILL.md frontmatter.

Context cost

Clay Rate Limits loads about 2.2k tokens when it runs. Until then it costs about 80 tokens; SKILL.md has 397 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~80
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jeremylongshore/tons-of-skills-marketplace at commit cfae287, republished under its MIT licence (© jeremylongshore). 397 words, ~2,156 tokens.

Download SKILL.mdSave it as .claude/skills/clay-rate-limits/SKILL.md (or your agent's skills folder).
name
clay-rate-limits
description
Handle Clay rate limits, webhook throttling, and credit pacing strategies. Use when hitting 429 errors, managing webhook submission rates, or optimizing throughput within Clay's plan limits. Trigger with phrases like "clay rate limit", "clay throttling", "clay 429", "clay slow", "clay records per hour".
allowed-tools
Read, Write, Edit, Bash(curl:*)
compatibility
Designed for Claude Code
version
1.14.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
saas, clay, api

Clay Rate Limits

Overview

Clay enforces rate limits at the plan level, webhook level, and enrichment provider level. Understanding these limits prevents data loss, credit waste, and integration failures.

Prerequisites

  • Clay account with known plan tier
  • Webhook URL(s) for your tables
  • Understanding of your data volume requirements

Instructions

Step 1: Understand Clay Rate Limit Tiers
PlanRecords/HourWebhook LimitHTTP API ColumnsEnterprise API
FreeLimited50K lifetime per webhookNot availableNot available
StarterStandard50K lifetime per webhookNot availableNot available
Explorer400/hour50K lifetime per webhookNot availableNot available
ProUnlimited50K lifetime per webhookAvailableNot available
EnterpriseUnlimited50K lifetime per webhookAvailableAvailable

Key insight: The 50K webhook submission limit is per-webhook, not per-table. Once exhausted, create a new webhook on the same table.

Step 2: Implement Webhook Rate Limiting
typescript
// src/clay/rate-limiter.ts — respect Clay's plan-level rate limits
import PQueue from 'p-queue';

interface RateLimiterConfig {
  maxPerHour: number;     // Plan limit (e.g., 400 for Explorer)
  maxPerSecond: number;   // Practical burst limit
  webhookLimit: number;   // 50K per webhook lifetime
}

const PLAN_LIMITS: Record<string, RateLimiterConfig> = {
  explorer: { maxPerHour: 400, maxPerSecond: 2, webhookLimit: 50_000 },
  pro:      { maxPerHour: Infinity, maxPerSecond: 10, webhookLimit: 50_000 },
  enterprise: { maxPerHour: Infinity, maxPerSecond: 20, webhookLimit: 50_000 },
};

class ClayRateLimiter {
  private queue: PQueue;
  private submissionCount = 0;
  private hourlyCount = 0;
  private hourlyResetAt: Date;
  private config: RateLimiterConfig;

  constructor(plan: keyof typeof PLAN_LIMITS) {
    this.config = PLAN_LIMITS[plan];
    this.queue = new PQueue({
      concurrency: 1,
      interval: 1000,
      intervalCap: this.config.maxPerSecond,
    });
    this.hourlyResetAt = new Date(Date.now() + 3600_000);
  }

  async submit(webhookUrl: string, data: Record<string, unknown>): Promise<Response> {
    // Check webhook lifetime limit
    if (this.submissionCount >= this.config.webhookLimit) {
      throw new Error(
        `Webhook submission limit (${this.config.webhookLimit}) reached. Create a new webhook.`
      );
    }

    // Check hourly limit
    if (Date.now() > this.hourlyResetAt.getTime()) {
      this.hourlyCount = 0;
      this.hourlyResetAt = new Date(Date.now() + 3600_000);
    }
    if (this.hourlyCount >= this.config.maxPerHour) {
      const waitMs = this.hourlyResetAt.getTime() - Date.now();
      console.log(`Hourly limit reached. Waiting ${(waitMs / 1000).toFixed(0)}s...`);
      await new Promise(r => setTimeout(r, waitMs));
      this.hourlyCount = 0;
    }

    return this.queue.add(async () => {
      const res = await fetch(webhookUrl, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(data),
      });

      if (res.status === 429) {
        const retryAfter = parseInt(res.headers.get('Retry-After') || '60');
        console.log(`429 rate limited. Waiting ${retryAfter}s...`);
        await new Promise(r => setTimeout(r, retryAfter * 1000));
        return this.submit(webhookUrl, data); // Retry
      }

      this.submissionCount++;
      this.hourlyCount++;
      return res;
    });
  }

  getStats() {
    return {
      totalSubmissions: this.submissionCount,
      hourlyRemaining: this.config.maxPerHour - this.hourlyCount,
      webhookRemaining: this.config.webhookLimit - this.submissionCount,
    };
  }
}
Step 3: Handle 429 Responses with Backoff
typescript
// src/clay/backoff.ts
async function withClayBackoff<T>(
  operation: () => Promise<T>,
  maxRetries = 5
): Promise<T> {
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
    try {
      return await operation();
    } catch (error: any) {
      if (attempt === maxRetries) throw error;

      // Clay returns 429 for plan-level rate limits
      const status = error.status || error.response?.status;
      if (status !== 429 && (status < 500 || status >= 600)) throw error;

      const baseDelay = 1000 * Math.pow(2, attempt); // 1s, 2s, 4s, 8s, 16s
      const jitter = Math.random() * 500;
      const delay = Math.min(baseDelay + jitter, 60_000); // Max 60s

      console.log(`Clay rate limited (attempt ${attempt + 1}). Retrying in ${(delay / 1000).toFixed(1)}s`);
      await new Promise(r => setTimeout(r, delay));
    }
  }
  throw new Error('Unreachable');
}
Step 4: Manage Webhook Lifecycle
typescript
// src/clay/webhook-manager.ts
interface WebhookState {
  url: string;
  submissionCount: number;
  createdAt: Date;
}

class WebhookManager {
  private webhooks: Map<string, WebhookState> = new Map();
  private readonly LIMIT = 50_000;
  private readonly WARN_THRESHOLD = 45_000;

  registerWebhook(tableId: string, url: string) {
    this.webhooks.set(tableId, { url, submissionCount: 0, createdAt: new Date() });
  }

  async getWebhookUrl(tableId: string): Promise<string> {
    const state = this.webhooks.get(tableId);
    if (!state) throw new Error(`No webhook registered for table ${tableId}`);

    if (state.submissionCount >= this.LIMIT) {
      throw new Error(
        `Webhook for table ${tableId} exhausted (${this.LIMIT} submissions). ` +
        `Create a new webhook in Clay UI: Table > + Add > Webhooks > Monitor webhook`
      );
    }

    if (state.submissionCount >= this.WARN_THRESHOLD) {
      console.warn(
        `Webhook for ${tableId} at ${state.submissionCount}/${this.LIMIT} submissions. ` +
        `Plan to create a replacement soon.`
      );
    }

    return state.url;
  }

  recordSubmission(tableId: string) {
    const state = this.webhooks.get(tableId);
    if (state) state.submissionCount++;
  }
}
Step 5: Enrichment Provider Rate Limits

Enrichment providers within Clay have their own limits. When using Clay's managed accounts, Clay handles throttling internally. When using your own API keys, you inherit the provider's rate limits:

ProviderTypical Rate LimitCredits per Lookup
Apollo100 req/min2 (own key: 0)
Clearbit600 req/min2-5 (own key: 0)
Hunter.io15 req/sec2 (own key: 0)
People Data Labs100 req/min3 (own key: 0)
Prospeo200 req/min2 (own key: 0)
Show full SKILL.md (168 more words)Show less

Error Handling

ErrorCauseSolution
429 Too Many RequestsPlan-level hourly limitReduce submission rate, upgrade plan
Webhook silently stops50K submission limit hitCreate new webhook on same table
Enrichment stuckProvider rate limitWait or connect your own API key
Explorer 400/hr limitPlan restrictionQueue submissions, upgrade to Pro

Output

Emit a rate-control record with table/webhook scope, queue depth, request and provider response class, retry timing, remaining submission capacity, credit budget state, and terminal decision. Do not use fresh webhook URLs or higher concurrency to conceal a throttling failure; preserve the idempotency key and resume only through the approved scheduler.

Examples

Queue a staging batch at the defined concurrency, honor a provider’s retry guidance, and surface a warning before the table webhook reaches its limit. If the limit or budget guardrail is reached, stop new submissions, drain pending jobs safely, and schedule an approved replacement rather than resending rows.

Resources

Next Steps

For security configuration, see clay-security-basics.

© jeremylongshore, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/.curated/clay-rate-limits of jeremylongshore/tons-of-skills-marketplace.

Open the folder on GitHubat commit cfae287

Compare with similar skills

Clay Rate Limits next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Clay Rate Limits compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Clay Rate Limits this skilljeremylongshore/tons-of-skills-marketplace2.8k—~2.2kAutomated safety check: PassMIT
Rails Security Multitenancymarckohlbrugge/37signals-skills724—~1.7kAutomated safety check: PassNone
Bfl APIblack-forest-labs/skills1281 repos~2.5kAutomated safety check: NotesMIT
Klaviyo Developerthatrebeccarae/claude-marketing161—~4.9kAutomated safety check: NotesMIT
Neon Functionsneondatabase/agent-skills100—~12kAutomated safety check: NotesApache-2.0
Frappe Core APIImpertio-Studio/Frappe_Claude_Skill_Package189—~3.2kAutomated safety check: PassMIT

Similar skills

  • Rails Security Multitenancy

    marckohlbrugge/37signals-skills

    Apply Rails security and multi-tenant safety practices including scoped queries, SSRF defenses, rate limiting, and tenant-scoped realtime updates.

    724 GitHub stars~1.7k tokensUpdated 4 mo ago
    Backend & APIsAuto-check passed
  • Bfl API

    black-forest-labs/skills

    BFL FLUX API integration guide covering endpoints, async polling patterns, rate limiting, error handling, webhooks, and regional endpoints with Python and TypeScript code examples.

    128 GitHub starsUsed in 1 repo~2.5k tokens
    Backend & APIsAuto-check: notes
  • Klaviyo Developer

    thatrebeccarae/claude-marketing

    Klaviyo API and developer integration expertise. An agent skill from thatrebeccarae/claude-marketing.

    161 GitHub stars~4.9k tokensUpdated 4 mo ago
    Backend & APIsAuto-check: notes
  • Neon Functions

    neondatabase/agent-skills

    Official

    Long-running, serverless Node.js HTTP functions deployed onto your Neon branch, with DATABASEURL injected automatically and compute that runs next to your data.

    100 GitHub stars~12k tokensUpdated 2 days ago
    Backend & APIsAuto-check: notes
  • Frappe Core API

    Impertio-Studio/Frappe_Claude_Skill_Package

    A skill your agent uses when building ERPNext/Frappe API integrations (v14/v15/v16) including REST API, RPC API, authentication, webhooks, and rate limiting.

    189 GitHub stars~3.2k tokensUpdated 24 days ago
    Backend & APIsAuto-check passed
  • Comfyui Gateway

    sickn33/agentic-awesome-skills

    REST API gateway for ComfyUI servers. An agent skill from sickn33/agentic-awesome-skills.

    47k GitHub starsUsed in 2 repos~3.8k tokens
    Backend & APIsAuto-check: notes

More from jeremylongshore/tons-of-skills-marketplace

All 3,342 skills in this repo
  • Performing Security Code Review

    jeremylongshore/tons-of-skills-marketplace

    Execute this skill enables AI assistant to conduct a security-focused code review using the security-agent plugin.

    2.8k GitHub starsUsed in 2 repos~1.3k tokens
    Auto-check: notes
  • Adapting Transfer Learning Models

    jeremylongshore/tons-of-skills-marketplace

    Build this skill automates the adaptation of pre-trained machine learning models using transfer learning techniques.

    2.8k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Agent Context Loader

    jeremylongshore/tons-of-skills-marketplace

    Execute proactive auto-loading: automatically detects and loads agents.md files.

    2.8k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Aggregating Performance Metrics

    jeremylongshore/tons-of-skills-marketplace

    Aggregate and centralize performance metrics from applications, systems, databases, caches, and services.

    2.8k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Analyzing Capacity Planning

    jeremylongshore/tons-of-skills-marketplace

    Execute this skill enables AI assistant to analyze capacity requirements and plan for future growth.

    2.8k GitHub stars~947 tokensUpdated today
    Auto-check passed
  • Analyzing Database Indexes

    jeremylongshore/tons-of-skills-marketplace

    Process use when you need to work with database indexing. An agent skill from jeremylongshore/tons-of-skills-marketplace.

    2.8k GitHub stars~2k tokensUpdated today
    Auto-check passed

Categories

Questions about Clay Rate Limits

What does Clay Rate Limits do?

Handle Clay rate limits, webhook throttling, and credit pacing strategies. Clay Rate Limits is an agent skill from jeremylongshore/tons-of-skills-marketplace. Handle Clay rate limits, webhook throttling, and credit pacing strategies.

When should I use Clay Rate Limits?

Clay Rate Limits fits situations like: hitting 429 errors; managing webhook submission rates; optimizing throughput within Clays plan limits; with phrases like clay rate limit.

How do I install Clay Rate Limits in Claude Code?

Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill clay-rate-limits -a claude-code`. Or copy the skill folder (skills/.curated/clay-rate-limits in jeremylongshore/tons-of-skills-marketplace) into .claude/skills/clay-rate-limits in your project. Claude Code loads it when a task matches its description.

How do I install Clay Rate Limits in Codex?

Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill clay-rate-limits -a codex`. Or copy the skill folder (skills/.curated/clay-rate-limits in jeremylongshore/tons-of-skills-marketplace) into .agents/skills/clay-rate-limits in your project. Codex loads it when a task matches its description.

Can I use Clay Rate Limits in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill clay-rate-limits -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/clay-rate-limits, .gemini/skills/clay-rate-limits, .github/skills/clay-rate-limits and .opencode/skills/clay-rate-limits in your project.

What does Clay Rate Limits need to run?

SKILL.md names no scripts, command-line tools or credentials: Clay Rate Limits is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(curl:*). Compatibility (from SKILL.md): Designed for Claude Code.

Does Clay Rate Limits access the network?

SKILL.md names 2 domains. As links in the text: university.clay.com and github.com. This is read from the text; nothing was executed.

Is Clay Rate Limits safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Clay Rate Limits use?

Clay Rate Limits is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Clay Rate Limits use?

About 2.2k tokens (SKILL.md is roughly 8.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Clay Rate Limits?

Skills that share tags, products or a category with Clay Rate Limits: Rails Security Multitenancy (marckohlbrugge/37signals-skills, 724 stars), Bfl API (black-forest-labs/skills, 128 stars), Klaviyo Developer (thatrebeccarae/claude-marketing, 161 stars) and Neon Functions (neondatabase/agent-skills, 100 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Clay Rate Limits?

jeremylongshore (a GitHub user) maintains it in jeremylongshore/tons-of-skills-marketplace, which has 2,827 GitHub stars. The repository holds 3,342 skills in this directory. The repository was last updated on October 10, 2026.

Source: jeremylongshore/tons-of-skills-marketplace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.