What is the NetLicensing API Rate Limit and what happens when I exceed it?
- What the limit means
- Limits per plan
- Which requests count
- What happens above the limit
- What 1 request per minute means in practice
- How to send fewer requests
- Getting a higher limit
Question
My plan says “1 request / minute”. Does that mean my application can validate a license only once a minute?
Answer
No. The API Rate Limit is a guaranteed minimum, not a maximum. It is the throughput NetLicensing always serves for your vendor account, even when the system is under heavy load. When the system is not busy, requests above that rate are served as usual.
What the limit means
| You send… | System not busy | System busy |
|---|---|---|
| At or below your plan’s rate | Served | Served (guaranteed) |
| Above your plan’s rate | Served | May be rejected with 429 |
The limit only matters when NetLicensing is busy. At those times, your plan’s rate is what you can count on.
Limits per plan
| Plan | Guaranteed throughput |
|---|---|
| Community | 1 request / minute |
| Basic | 1 request / minute |
| Premium | 1 request / second |
| Select | Customizable |
The limit applies per vendor account. All your products, API keys and client applications share it.
The API Rate Limit is not the same as the number of products, licensees or licenses your plan allows. Those are separate plan limits. The rate limit only controls how fast requests are served when the system is busy.
Which requests count
Every request to the NetLicensing REST API counts, whatever the endpoint: license validation, creating and updating licensees and licenses, tokens, and so on. It makes no difference whether the request comes from your own code, one of the client libraries, the MCP server or a NetLicensing Agent in proxy mode.
What happens above the limit
If you are above your plan’s rate while the system is busy, NetLicensing rejects the request with HTTP 429 Too Many Requests. The Retry-After header gives the number of seconds to wait before you try again (see API Conventions).
Your application should:
- Treat
429as “try again later”, not as an invalid license. - Wait for the number of seconds in
Retry-After, then retry. - Meanwhile, keep using the last successful validation result while its
ttlis valid, as you would during a network outage.
Never lock the user out because of a 429. It says nothing about the license.
What 1 request per minute means in practice
One validation is one request. A single call to POST /licensee/{licenseeNumber}/validate returns the result for every product module of the licensee, so you never need one call per module.
At the guaranteed rate, 1 request per minute is 60 validations per hour, or 1,440 per day. That covers applications that validate at start-up, when a licensed feature is opened, or a few times a day. If you have many active users who validate often, plan for a higher limit.
How to send fewer requests
- Validate when it matters, not on every action. Validate at start-up, when a session begins or when the user opens a licensed feature. See How often should my application validate the license?
- Reuse the result until its TTL. Every validation response contains a
ttl. Cache the response and don’t call the API again until it expires. You set the TTL in the Management Console settings. See Offline validation using TTL. - Validate once for all modules. One validate call covers every product module of the licensee.
- Put a NetLicensing Agent in front of many clients. In proxy mode (
run-agent), the Agent caches validation results (locally or in Redis), so clients on the same network don’t each call the cloud. See Validation Cache in Proxy Mode. - Don’t poll for changes. Use webhook notifications to find out about purchases and license changes instead of calling the API repeatedly.
Getting a higher limit
Upgrade to Premium for a guaranteed 1 request per second. If you need more, the Select plan’s limit is set to match your load: contact us.
Related
- FAQ: What do HTTP 400, 401, 402, 403 and 404 mean in NetLicensing API responses?
- FAQ: What happens if NetLicensing is unreachable?
- API Conventions: Errors