Each Viously endpoint is rate limited on a daily basis. This means that once your app hits the limit, you will receive an HTTP 429 error response until the limit is reset the next day.
Rate limits are global and are applied to the user. If you think that your usage requires an increase, please contact your account manager.
The returned HTTP headers of any API request show your current rate limit status:
Header Name | Description |
---|---|
Vsly-Rate-Limit | The maximum number of requests you're permitted to make per day. |
Vsly-Rate-Remaining | The number of requests remaining in the current rate limit window. |
Vsly-Rate-Reset | The time at which the current rate limit window resets in UTC epoch seconds |
Monitoring your usage
Each response includes three custom headers:
Header | Description | Example |
---|---|---|
Vsly-Rate-Limit | Your maximum number of calls for the current window. | 1000 |
Vsly-Rate-Remaining | Calls still available before throttling. | 756 |
Vsly-Rate-Reset | Unix epoch (seconds) when the counter resets. | 1713405600 |
HTTP/1.1 200 OK
Vsly-Rate-Limit: 1000
Vsly-Rate-Remaining: 756
Vsly-Rate-Reset: 1713405600
Convert the
Vsly-Rate-Reset
value to a human‑readable timestamp if you need a countdown.
What happens at the limit?
When Vsly-Rate-Remaining
reaches 0, subsequent requests return:
HTTP/1.1 429 Too Many Requests
Retry-After: 86400
{
"@context": "/v2/contexts/Error",
"@type": "hydra:Error",
"hydra:title": "An error occurred",
"hydra:description": "The request cannot be completed because you have exceeded your daily quota.",
}
Requests made before reset time are still blocked, even if you renew your token.
Best practices
- Cache GET responses – to avoid redundant calls.
- Batch where possible – prefer collection endpoints to multiple item calls.
- Retry wisely – on 429, sleep until the timestamp in Vsly-Rate-Reset header.
- Monitor in real time – expose Vsly-Rate-Remaining in your logs/dashboards.
- Need more quota? – contact your account manager with expected traffic numbers.