Skip to main content

Documentation Index

Fetch the complete documentation index at: https://polyfeed.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Rate limits are enforced per API key, reset every minute, in-memory (resets on api restart). Hit a limit → 429 Too Many Requests with Retry-After header.

Tiers

Live tier catalog: GET /v1/billing/tiers. The values below are reference snapshots.
TierCoinsRoutesReq/minPrice (USDC/mo)
FreeBTCmarkets, prices10$0
StarterBTC, ETH+ snapshots, quotes60TBD
Pro+ SOL, XRPall300TBD
Enterpriseallall1000+custom
Coin gates enforced at middleware. Hitting an out-of-tier coin → 403 Forbidden.

Headers

Every response carries:
HeaderMeaning
X-RateLimit-LimitRequests allowed per minute on your tier
X-RateLimit-RemainingRequests left in current window
X-RateLimit-ResetUnix epoch seconds when window resets
On 429:
HeaderMeaning
Retry-AfterSeconds to wait before retry

Backoff strategy

Don’t tight-loop on 429. Use exponential backoff with jitter.
async function fetchWithBackoff(url: string, key: string, attempt = 0): Promise<Response> {
  const res = await fetch(url, { headers: { Authorization: `Bearer ${key}` } });
  if (res.status !== 429 || attempt > 4) return res;
  const wait = (Number(res.headers.get('retry-after')) || 2 ** attempt) * 1000;
  await new Promise((r) => setTimeout(r, wait + Math.random() * 250));
  return fetchWithBackoff(url, key, attempt + 1);
}

Upgrading

Quote and settle via x402 on Polygon. See Billing — x402.