Get started
Limits
In short
Each API key can send a set number of requests a minute, based on your plan. On top of that, some allowances count per workspace: links a month, analytics calls, and AI slugs. When you reach a limit, you get a 429 or a 402 that says which one.
Limits by plan
Limits for each plan
- API requests per minutePer key
- 30
- API keysPer workspace, revoked keys excluded
- 3
- New links per monthPer workspace, per billing month
- 50
- Analytics requests per minutePer workspace, shared by all keys
- 5
- Analytics requests per dayPer workspace, resets at 00:00 UTC
- 100
- Click history you can readOlder clicks are left out, not an error
- 30 days
- AI slug suggestions per dayPer workspace, resets at 00:00 UTC
- 10
- Folders
- 3
- Tags
- 5
- Custom domainsPlus the free Clikso domains
- 1
| Limit | Free | Starter | Pro | Business |
|---|---|---|---|---|
| API requests per minutePer key | 30 | 100 | 300 | 500 |
| API keysPer workspace, revoked keys excluded | 3 | 10 | 20 | 30 |
| New links per monthPer workspace, per billing month | 50 | 500 | 5,000 | 10,000 |
| Analytics requests per minutePer workspace, shared by all keys | 5 | 10 | 30 | 60 |
| Analytics requests per dayPer workspace, resets at 00:00 UTC | 100 | 1,000 | 5,000 | 20,000 |
| Click history you can readOlder clicks are left out, not an error | 30 days | 90 days | 180 days | 365 days |
| AI slug suggestions per dayPer workspace, resets at 00:00 UTC | 10 | 30 | 200 | Unlimited |
| Folders | 3 | 6 | 15 | 40 |
| Tags | 5 | 10 | 20 | 50 |
| Custom domainsPlus the free Clikso domains | 1 | 2 | 5 | 12 |
Prices for each plan are on the pricing page.
Requests per minute
Each key has its own limit, counted in one-minute windows. Two keys in one workspace each get the full amount.
Go over it and you get 429 RATE_LIMITED. The Retry-After header says how many seconds to wait. The next minute starts clean, and nothing is blocked for longer.
There is also a limit on failed key checks. One IP address can fail 30 checks a minute. Past that, its failed checks get 429 RATE_LIMITED until the minute ends. Requests with a valid key are not affected.
Analytics quota
Click analytics calls cost more to answer, so they have their own quota. It counts per workspace, and every key in the workspace shares it.
- Per minute. Over it, you get
429 RATE_LIMITEDwith aRetry-Afterheader. - Per day. The day runs from midnight to midnight UTC. Over it, you get
429 USAGE_LIMIT_REACHED, anderror.details.resets_atsays when it starts again.
If you send the same request twice within 60 seconds, the second answer comes from a cache. It still counts toward the quota.
Every analytics response has these headers, so you can slow down before you hit a limit:
X-RateLimit-Limit,X-RateLimit-RemainingandX-RateLimit-Reset— for the current minute.X-Analytics-Quota-LimitandX-Analytics-Quota-Remaining— for the current UTC day.
Analytics calls also count toward the key's own requests per minute. See Click analytics for the calls themselves.
Click history
Each plan can read clicks from a set number of days back. That is the "Click history you can read" row above. If you ask for an older start date, Clikso moves it forward to the oldest day your plan can read. This is not an error. The response tells you it happened, with retention_clamped and effective_from.
Per-route limits
Two endpoints have their own limits, per workspace:
- AI slug suggestions (
POST /links/ai-slug): up to 15 calls a minute, and the daily number in the table above. The day resets at midnight UTC. See AI slugs. - Link previews (
POST /links/og-preview): up to 30 calls a minute.
Monthly links
Each plan can create a set number of new links in a monthly period. The period starts on your billing day, not on the 1st. Read your count, and when it resets, with Get usage.
When you reach the limit, POST /links returns 429 USAGE_LIMIT_REACHED until the next period. Changing, archiving and reading links still work.
Clicks are never blocked. Your short links keep redirecting, however many clicks they get.
API keys
The number of keys only matters when you create one. Revoked keys do not count, so you can always swap an old key for a new one. Each browser connected to the Clikso extension holds a key too, and those count. If you move to a smaller plan, the keys you already have keep working.
Folders and tags
Each plan can hold a set number of folders and tags. An API key that tries to create one more gets 402 UPGRADE_REQUIRED. Renaming, deleting and using the ones you have always work.
Size limits
These limits apply on every plan:
- Bulk changes: up to 100 link ids per call.
- Lists: up to 200 links per page.
meta.totalstops counting at 10,000, so page withhas_more. - Analytics filters: up to 100 values in each filter list.
- Analytics by domain: a domain filter covers up to 250 links. When it is cut short,
link_filter_truncatedistrue. - Analytics breakdowns: the top 250 values in each list, such as countries or referrers.
- Raw clicks: the newest 1,000 clicks per call.
What you get back
When you reach a limit, the status and code tell you which kind:
429 RATE_LIMITED— too fast. Wait forRetry-After, then try again.429 USAGE_LIMIT_REACHED— an allowance is used up for now. Wait for the reset, or upgrade.402 UPGRADE_REQUIRED— your plan does not include this, or you have all the folders or tags it allows.
Common errors
UPGRADE_REQUIREDA field needs a higher plan, or a new folder or tag is past your plan’s count.Leave the field out, or upgrade the workspace.Leave the field out, or upgrade the workspace.RATE_LIMITEDToo many requests this minute, for this key or for the workspace’s analytics or AI slugs.Wait the number of seconds in the Retry-After header, then try again.Wait the number of seconds in the Retry-After header, then try again.USAGE_LIMIT_REACHEDLinks this month, AI slugs today or analytics calls today are used up.Wait for the reset (analytics sends details.resets_at) or upgrade.Wait for the reset (analytics sends details.resets_at) or upgrade.Good to know
- Spread big jobs out. A short pause between calls keeps you well under the limit.
- When you get a
429 RATE_LIMITED, always honourRetry-Afterbefore you try again. - A higher plan raises these limits once the plan change goes through.
