Skip to content

Limits and quotas

Rolink is free during the beta, with quotas per project so one game can’t crowd out the others. This page lists every limit in one place: the beta quotas, the limits on what a project can hold, the transaction policy you control, and the rules the dashboard checks when you save.

QuotaLimitWindowRefused with
API requests per project100,000Per UTC day, reset at 00:00 UTCdaily_quota_exceeded (429)
API requests per project600Per minuterate_limited (429)
Transactions per project1,000Rolling 24 hoursdaily_tx_quota_exceeded (429)
Projects per developer5At any timeproject_limit_reached (403)
  • Every /v1 request with a valid key counts, whatever its answer, errors included. A lookup of 200 players with GetWallets is one request.
  • Requests refused by the quota itself don’t count toward the daily total.
  • Nothing else counts: GET /health, the linking page, the dashboard, live events and watched-address polling are not API requests.
  • Answers from the SDK’s wallet cache never reach the API, so they don’t count either.
  • No rate-limit headers. Responses don’t carry quota headers. The project’s Overview in the dashboard shows today’s usage and the last 14 days. Counts there update every few seconds.

The SDK retries rate_limited after 0.5 and 1.5 seconds, and raises daily_quota_exceeded at once.

  • Rolling 24 hours. At each request, Rolink counts the project’s transaction requests created in the last 24 hours that are pending, submitted or confirmed.
  • Failed attempts don’t count, so a failed transaction never uses quota.
  • Replays don’t count twice. Sending the same request again with a key that is already pending, submitted or confirmed returns the earlier attempt and creates nothing new.
  • Refused requests don’t count. A request refused by validation, the policy or a quota creates no transaction.

The SDK raises daily_tx_quota_exceeded at once. Queue the payment and retry later with the same key.

The Overview’s Transactions today figure is a usage counter, not the quota itself: it counts every transaction call that returned a result during the current UTC day, replays and failed results included, so it can differ from the count the quota uses.

LimitValue
Active API keys per project10 (key_limit_reached beyond that)
API key nameUp to 48 characters. An empty name becomes Default.
Managed wallets per project1
Watched addresses per project10
Allowed mints in the transaction policy20
Hourly budgets in the transaction policyOne per asset: SOL and each allowed mint

Deleted projects don’t count toward the 5 projects per developer. Revoked keys don’t count toward the 10 active keys.

Set per project under Transactions in the dashboard. A new project starts with the defaults below, which allow nothing: SOL transfers are off and no mint is listed. Validation messages in the dashboard name each field by its dashboard label.

FieldDashboard labelDefaultRules
solLimitMax SOL per transferEmpty: SOL transfers offA decimal such as 0.05, with at most 9 decimals.
tokenLimitsAllowed mintsNone: no token transfers or mintsUp to 20 entries. Each mint must be a token mint (SPL Token or Token-2022) on the project’s cluster. Each maximum is a decimal in token units, with no more decimals than the mint has.
recipientHourlyLimitPer recipient wallet20A whole number from 1 to 10,000: transactions to one wallet per rolling hour.
playerHourlyLimitPer player20A whole number from 1 to 10,000: transactions to one player, across their wallets, per rolling hour.
hourlyBudgetsHourly budgetsNoneOne entry per asset, keyed by SOL or an allowed mint. Each budget is a decimal in that asset’s units, within its decimals.

Rolling-hour limits and budgets count requests created in the last 60 minutes that are pending, submitted or confirmed. Minting and transferring the same mint share its budget. Policy changes take effect within about 30 seconds. See Send transactions for how each limit is applied.

The dashboard checks these when you save, and refuses anything else with invalid_settings and a message that names the field.

SettingRules
Name2 to 48 characters. You can rename a project at any time.
Clusterdevnet or mainnet, chosen when you create the project. It applies to every read, transaction and watched address of the project.
SlugSet from the name when the project is created: lowercase letters, digits and hyphens, up to 40 characters, plus a short suffix if the slug is already taken. It’s part of the linking page URL and doesn’t change when you rename the project.
SettingRules
Client IDDigits only, up to 32. Clearing it turns Roblox sign-in off.
Client secretUp to 512 characters. Stored encrypted. Leave the field empty to keep the saved secret.
SettingRules
Universe IDDigits only. Clearing it turns live events off.
Open Cloud API keyUp to 4,096 characters. Stored encrypted.
Event topic1 to 80 letters, digits, - and _. Default rolink.
SettingRules
Name1 to 32 characters: lowercase letters, digits, - and _, starting with a letter or a digit. Unique within the project.
AddressA valid Solana address. Read on the project’s cluster.
CountUp to 10 per project.
ValueLimit
idempotencyKey1 to 128 characters, unique per payment within the project
amountA decimal string matching ^\d+(\.\d+)?$, greater than zero, with no more decimals than the asset (9 for SOL)
userIds in a bulk wallet lookupUp to 200 per request. The SDK splits longer lists.
User IDsPositive integers
Assets per readThe first 1,000 assets of the wallet or collection
WhatValue
A transaction request waits for confirmationUp to 15 seconds, then answers submitted
Confirmation checks for a submitted transactionEvery 1.5 seconds, with a sweep every 30 seconds
Proof of expiryThe finalized chain is more than 32 blocks past the transaction’s last valid block height
A request interrupted before sendingMarked failed (Abandoned before sending) after 2 minutes
Balance, token and asset readsCached for about 10 seconds
Watched addressesPolled every few seconds, up to 1,000 new transactions per watch per poll
Settings, policy and key revocationsTake effect within about 30 seconds
Linking challengeExpires after 10 minutes
Player session (one game’s linking page)1 hour
Developer session (dashboard)12 hours
Sign in with Roblox handshake10 minutes
Dashboard wallet sign-in, from choosing the wallet to signing10 minutes
Event publishingUp to 4 attempts of 5 seconds each
SDK wallet cachewalletCacheSeconds, 60 by default
SDK request retries3 attempts, 0.5 and 1.5 seconds apart
SDK event subscription5 attempts, 2, 4, 8 and 16 seconds apart
  • HttpService allows each game server 500 requests per minute, to every host combined. Cache wallet lookups and batch with GetWallets.
  • MessagingService refuses messages over 1 kB. Rolink keeps every event under that size. See Events.