Rate Limits

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 NameDescription
Vsly-Rate-LimitThe maximum number of requests you're permitted to make per day.
Vsly-Rate-RemainingThe number of requests remaining in the current rate limit window.
Vsly-Rate-ResetThe time at which the current rate limit window resets in UTC epoch seconds

Monitoring your usage

Each response includes three custom headers:


HeaderDescriptionExample
Vsly-Rate-LimitYour maximum number of calls for the current window.1000
Vsly-Rate-RemainingCalls still available before throttling.756
Vsly-Rate-ResetUnix 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

  1. Cache GET responses – to avoid redundant calls.
  2. Batch where possible – prefer collection endpoints to multiple item calls.
  3. Retry wisely – on 429, sleep until the timestamp in Vsly-Rate-Reset header.
  4. Monitor in real time – expose Vsly-Rate-Remaining in your logs/dashboards.
  5. Need more quota? – contact your account manager with expected traffic numbers.