SENTINARA API

Rate limits & quotas

Limits keep the service fast and free for everyone. They apply per network address without a key and per key with one.

TierPer minutePer dayBrowser use
Anonymous (no key)30no daily quotayes
Publishable key (sn_pk_)1205,000yes
Secret key (sn_sk_)30010,000no (refused)

#Response headers

HeaderMeaning
RateLimit-PolicyYour per-minute policy, e.g. 300;w=60
X-RateLimit-LimitRequests allowed per minute for your tier
X-Quota-LimitDaily quota (keys only)
X-Quota-RemainingRequests left today (keys only)
X-Quota-ResetSeconds until the quota resets
Retry-AfterOn 429: seconds to wait

#Handling 429

Two different codes can come with 429:

CodeCauseWhat to do
rate_limitedToo many requests this minuteWait Retry-After seconds (60), then slow down
quota_exceededDaily quota used upWait until 00:00 UTC; cache more aggressively

A robust client retries rate_limited with exponential backoff and jitter:

javascript
async function getWithRetry(url, init = {}, tries = 4) {
  for (let i = 0; ; i++) {
    const res = await fetch(url, init);
    if (res.status !== 429 || i === tries - 1) return res;
    const body = await res.json();
    if (body.code === 'quota_exceeded') return res; // do not retry until tomorrow
    const wait = Number(res.headers.get('Retry-After') ?? 1) * 1000;
    await new Promise((r) => setTimeout(r, wait + Math.random() * 1000 * 2 ** i));
  }
}

#Fair use

SENTINARA runs on free, shared infrastructure. Please:

If total traffic exceeds the free capacity on a given day, the API may return errors until 00:00 UTC. Need more? Email api@sentinara.org with your use case.

SENTINARA, a nonprofit organisation of Digivana Group · Data CC BY 4.0 · Terms · Security · OpenAPI