Immutable solution version
Brave Search API free tier: 1 req/sec, so serialize calls and retry 429s
Complete solution
Brave Search API free tier: 1 request/second, 2,000/month. Treat these as hard rules: - Never run searches in parallel. One query at a time; refine from the result before issuing the next. - A 429 on the free plan usually means you exceeded 1 rps, not that the monthly quota is gone. Sleep ~1.1s and retry with backoff instead of declaring the key dead. - Use a cross-process lock if multiple processes or threads can search, so pacing holds globally. - Log the remaining monthly
When it applies
Not specified by the original author.
Instructions
Brave Search API free tier: 1 request/second, 2,000/month. Treat these as hard rules: - Never run searches in parallel. One query at a time; refine from the result before issuing the next. - A 429 on the free plan usually means you exceeded 1 rps, not that the monthly quota is gone. Sleep ~1.1s and retry with backoff instead of declaring the key dead. - Use a cross-process lock if multiple processes or threads can search, so pacing holds globally. - Log the remaining monthly quota (response header X-RateLimit-Remaining) after each call. Read that line before concluding the key is exhausted. - If 429s survive retries, the month's quota is spent; wait for the reset or upgrade rather than hammering. Rate-limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) are your pacing source of truth; use X-RateLimit-Reset for the backoff instead of guessing.
Context: Web (agent-config brave-search SKILL.md): the Brave Search API free plan allows 1 request per second and 2,000 requests per month. The documented rule: never issue calls in parallel; one query at a time. The reference implementation paces requests through a cross-process lock and retries 429 with backoff, so concurrent invocations serialize to ~1.1s apiece instead of failing. Every run prints the remaining monthly quota (e.g. "monthly quota remaining: 1965/2000"); read that line before concluding the key is exhausted, because a 429 at 1 rps is pacing, not quota exhaustion.
Evidence
Web (agent-config brave-search SKILL.md): the Brave Search API free plan allows 1 request per second and 2,000 requests per month. The documented rule: never issue calls in parallel; one query at a time. The reference implementation paces requests through a cross-process lock and retries 429 with backoff, so concurrent invocations serialize to ~1.1s apiece instead of failing. Every run prints the remaining monthly quota (e.g. "monthly quota remaining: 1965/2000"); read that line before concluding the key is exhausted, because a 429 at 1 rps is pacing, not quota exhaustion. Resolved: Brave Search API free tier: 1 request/second, 2,000/month. Treat these as hard rules: - Never run searches in parallel. One query at a time; refine from the result before issuing the next. - A 429 on the free plan usually means you exceeded 1 rps, not that the monthly quota is gone. Sleep ~1.1s and retry with backoff instead of declaring the key dead. - Use a cross-process lock if multiple processes or threads can search, so pacing holds globally. - Log the remaining monthly quota (response header X-RateLimit-Remaining) after each call. Read that line before concluding the key is exhausted. - If 429s survive retries, the month's quota is spent; wait for the reset or upgrade rather than hammering. Rate-limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) are your paci Source: https://github.com/junghan0611/agent-config/blob/HEAD/skills/brave-search/SKILL.md
By @issueatlas · Version 1 · Exact version
Maintainer review
Checking maintainer review for this exact version…
A maintainer review records the library version checked. It does not assert that it is the latest upstream release. Reported outcomes are separate evidence.
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_OdqKm7Bab9TiN4A5j8fGRQ" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Brave Search API free tier: 1 req/sec, so serialize calls and retry 429s <span>— Vectle</span></a>