API Rate Limits

API Rate Limits

Overview

To ensure fair usage and protect the platform, MoneyKit enforces per-endpoint rate limits. Limits may apply at the client, user, link, or app level as specified below. When a limit is exceeded, the API will return a429 Too Many Requests response and include aRetry-After header indicating when you may retry (either as the number of seconds to wait or as an HTTP-date after which the request is allowed).

Refresh Products Rate Limits

Most endpoints follow the standard rate limits listed below. For the POST /links/{id}/products endpoint, you may receive a 429 Too Many Requests response if a particular product has been refreshed too recently. We allow hourly refreshes for accounts and daily refreshes for all other products. Additionally, some institutions only support data refreshes at specific times of day; attempting to refresh outside those windows will also result in a 429 Too Many Requests response.

Rate Limits

EndpointLimitScope
POST /auth/token300 calls per minuteper client
GET /institutions30 calls per minuteper app
GET /institutions/{institution_id}400 calls per minuteper app
POST /link-session20 calls per minuteper user
POST /link-session1,200 calls per minuteper app
GET /links600 calls per minuteper app
POST /links/import60 calls per minuteper app
GET /links/{id}15 calls per minuteper link
GET /links/{id}1,000 calls per minuteper app
PATCH /links/{id}4 calls per minuteper link
PATCH /links/{id}600 calls per minuteper app
DELETE /links/{id}600 calls per minuteper app
GET /links/{id}/accounts4 calls per minuteper link
GET /links/{id}/accounts600 calls per minuteper app
GET /links/{id}/accounts/numbers3 calls per minuteper link
GET /links/{id}/accounts/numbers600 calls per minuteper app
GET /links/{id}/accounts/{account_id}15 calls per minuteper link
GET /links/{id}/accounts/{account_id}600 calls per minuteper app
GET /links/{id}/identity3 calls per minuteper link
GET /links/{id}/identity600 calls per minuteper app
POST /links/{id}/import/transactions120 calls per minuteper app
GET /links/{id}/investments/holdings4 calls per minuteper link
GET /links/{id}/investments/holdings600 calls per minuteper app
GET /links/{id}/investments/transactions4 calls per minuteper link
GET /links/{id}/investments/transactions600 calls per minuteper app
GET /links/{id}/transactions10 calls per minuteper link
GET /links/{id}/transactions2,000 calls per minuteper app
GET /links/{id}/transactions/sync10 calls per minuteper link
GET /links/{id}/transactions/sync2,000 calls per minuteper app
POST /links/{id}/transactions/{txn_id}/enrichment10 calls per minuteper link
POST /links/{id}/transactions/{txn_id}/enrichment2,000 calls per minuteper app
POST /webhooks/test/link/{id}5 calls per minuteper link
POST /webhooks/test/link/{id}20 calls per minuteper app