FeelConnect▍
ProductsDocsPricingChangelog
Sign inGet API keys

Search documentation

Fuzzy search across every docs page and section

Platform/Rate limits and quotas

Getting started

  • Overview
  • Quickstart
  • Authentication
  • Environments and sandbox
  • Link
  • Going live

API reference

  • Link tokens
  • Institutions
  • Items
  • Accounts
  • Transactions
  • Identity
  • Income
  • Assets
  • Investments
  • Liabilities
  • Recurring
  • Categories
  • AI products

Platform

  • Webhooks
  • Errors
  • Rate limits and quotas
  • SDKs
  • GraphQL
  • MCP and AI agents
  • Changelog
  1. Docs
  2. Platform
  3. Rate limits and quotas
PreviousErrorsNextSDKs

On this page

  • Limits by plan
  • How the rate limit works
  • Rate limit headers
  • Handling 429s
  • Monthly quotas
FeelConnect▍

The developer-first financial data platform.

All systems operational

Products

Universal LinkData APIsAI enrichmentPricing

Developers

DocumentationAPI explorerDashboardGet API keys

Company

HomeChangelogfeels.moneySign in

Legal

PrivacyTermsSecurityData processing
© 2026 FeelConnect. All rights reserved./v1 · FC-Version 2026-07-01

Platform

Rate limits and quotas

Per-plan requests-per-second limits with 3x burst, monthly request and AI quotas, rate-limit headers, and 429 handling.

Two independent limits protect the platform: a per-second rate limit per API key (token bucket with 3x burst) and monthly quotas per application. Both return 429 rate_limit_error when exhausted.

Limits by plan

PlanPriceRate limitBurstAPI requests / moAI requests / moConnected usersLive access
Free$010 rps3010,0001,000100Test only
Startup$99/mo50 rps150500,00050,0005,000Yes
Growth$499/mo200 rps6005,000,000500,00050,000Yes
EnterpriseCustom1000 rps3000CustomCustomCustomYes

Plans also set webhook endpoint and team member counts — see pricing. Upgrades apply immediately; quotas reset on the first of each month (UTC).

How the rate limit works

  • Each key has a token bucket holding 3x its rps in tokens; each request spends one.
  • Tokens refill continuously at the plan's rps. Short spikes up to the burst size pass; sustained load above the rps drains the bucket and returns 429s.
  • The limit is per key. Traffic split across keys of the same app is limited per key but metered against the app's shared monthly quota.

Rate limit headers

HeaderMeaning
X-RateLimit-LimitSustained rps for this key.
X-RateLimit-RemainingTokens currently left in the bucket.
X-RateLimit-ResetSeconds until the bucket is completely full again.

Handling 429s

Back off and retry — the bucket refills within seconds. A minimal decorrelated backoff:

async function withBackoff<T>(fn: () => Promise<T>, maxAttempts = 5): Promise<T> {
let delay = 500;
for (let attempt = 1; ; attempt++) {
try {
return await fn();
} catch (err) {
const retryable =
err instanceof FeelConnectError &&
(err.type === "rate_limit_error" || err.type === "api_error");
if (!retryable || attempt === maxAttempts) throw err;
await new Promise((r) => setTimeout(r, delay + Math.random() * delay));
delay = Math.min(delay * 2, 8000);
}
}
}
const page = await withBackoff(() =>
fc.transactions.sync({ access_token: token })
);

Monthly quotas

  • API requests — every /v1 call counts one, including 4xx responses to authenticated requests.
  • AI requests — AI product calls additionally count one AI request.
  • At 80% of either quota, a usage.limit_approaching webhook fires and a banner appears in the dashboard.
  • At 100%, further calls return 429 rate_limit_exceeded until the month resets or you upgrade. Data is never deleted — only the API gate closes.
  • Track consumption in Dashboard → Usage, broken down per product and per day.