[{"data":1,"prerenderedAt":288},["ShallowReactive",2],{"/api/overview/rate-limiting":3,"/api/overview/rate-limiting-surround":279},{"id":4,"title":5,"body":6,"description":270,"extension":271,"links":272,"meta":273,"navigation":274,"path":275,"seo":276,"stem":277,"__hash__":278},"docs/api/1.overview/rate-limiting.md","Rate Limiting",{"type":7,"value":8,"toc":264},"minimark",[9,31,36,51,67,117,121,135,151,157,161,177,202,206,213,218,250,260],[10,11,12,13,17,18,17,21,24,25,30],"p",{},"The API enforces rate limits per ",[14,15,16],"strong",{},"API token",", per ",[14,19,20],{},"endpoint",[14,22,23],{},"time window",". Each endpoint lists its own quota in its description in the ",[26,27,29],"a",{"href":28},"/api/reference","Reference",".",[32,33,35],"h2",{"id":34},"ratelimit-header","RateLimit header",[10,37,38,39,43,44,50],{},"Every response includes a single ",[40,41,42],"code",{},"RateLimit"," header in ",[26,45,49],{"href":46,"rel":47},"https://www.ietf.org/archive/id/draft-ietf-httpapi-ratelimit-headers-08.txt",[48],"nofollow","IETF draft-8"," format:",[52,53,58],"pre",{"className":54,"code":55,"language":56,"meta":57,"style":57},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","RateLimit: limit=5, remaining=4, reset=58\n","http","",[40,59,60],{"__ignoreMap":57},[61,62,65],"span",{"class":63,"line":64},"line",1,[61,66,55],{},[68,69,70,83],"table",{},[71,72,73],"thead",{},[74,75,76,80],"tr",{},[77,78,79],"th",{},"Field",[77,81,82],{},"Meaning",[84,85,86,97,107],"tbody",{},[74,87,88,94],{},[89,90,91],"td",{},[40,92,93],{},"limit",[89,95,96],{},"Total requests allowed in the window",[74,98,99,104],{},[89,100,101],{},[40,102,103],{},"remaining",[89,105,106],{},"Requests left in the current window",[74,108,109,114],{},[89,110,111],{},[40,112,113],{},"reset",[89,115,116],{},"Seconds until the window resets",[32,118,120],{"id":119},"exceeding-the-limit","Exceeding the limit",[10,122,123,124,127,128,130,131,134],{},"When a request is rejected the API returns ",[40,125,126],{},"429 Too Many Requests",". The ",[40,129,42],{}," header is still present and will show ",[40,132,133],{},"remaining=0",":",[52,136,138],{"className":54,"code":137,"language":56,"meta":57,"style":57},"HTTP/1.1 429 Too Many Requests\nRateLimit: limit=5, remaining=0, reset=43\n",[40,139,140,145],{"__ignoreMap":57},[61,141,142],{"class":63,"line":64},[61,143,144],{},"HTTP/1.1 429 Too Many Requests\n",[61,146,148],{"class":63,"line":147},2,[61,149,150],{},"RateLimit: limit=5, remaining=0, reset=43\n",[10,152,153,154,156],{},"Wait ",[40,155,113],{}," seconds before retrying.",[32,158,160],{"id":159},"recommendations","Recommendations",[162,163,164],"tip",{},[10,165,166,167,169,170,173,174,176],{},"Check ",[40,168,103],{}," before sending bursts. When you receive a ",[40,171,172],{},"429",", wait exactly ",[40,175,113],{}," seconds before retrying. Implement exponential backoff on top of this for additional robustness.",[178,179,180,187,196,199],"ul",{},[181,182,183,184,186],"li",{},"Read ",[40,185,103],{}," proactively and slow down before it reaches zero",[181,188,189,190,192,193,195],{},"On ",[40,191,172],{},": wait ",[40,194,113],{}," seconds, then retry",[181,197,198],{},"Layer exponential backoff on top for robustness against transient issues",[181,200,201],{},"Cache responses where appropriate to reduce the total number of requests",[32,203,205],{"id":204},"creation-quota","Creation quota",[10,207,208,209,212],{},"Object creation endpoints share a ",[14,210,211],{},"per-user creation quota"," that is separate from the per-endpoint request rate limit.",[162,214,215],{},[10,216,217],{},"If you want to bulk import objects, we recommend to use the bulk import feature in the app instead.",[68,219,220,228],{},[71,221,222],{},[74,223,224,226],{},[77,225],{},[77,227],{},[84,229,230,240],{},[74,231,232,237],{},[89,233,234],{},[14,235,236],{},"Hard limit",[89,238,239],{},"5,000 objects",[74,241,242,247],{},[89,243,244],{},[14,245,246],{},"Auto-increase",[89,248,249],{},"+100 objects per month once the hard limit is reached",[10,251,252,253,256,257,30],{},"When the creation quota is exhausted the API returns ",[40,254,255],{},"403"," with the error code ",[40,258,259],{},"objectCreationQuotaReached",[261,262,263],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":57,"searchDepth":64,"depth":147,"links":265},[266,267,268,269],{"id":34,"depth":147,"text":35},{"id":119,"depth":147,"text":120},{"id":159,"depth":147,"text":160},{"id":204,"depth":147,"text":205},"How rate limits work in the Capacities API and how to handle them gracefully.","md",null,{},true,"/api/overview/rate-limiting",{"title":5,"description":270},"api/1.overview/rate-limiting","eT210962ccRsEuqTz7tC-Q9H6UheFhBlhDkVDihxR58",[280,284],{"title":281,"path":282,"stem":283,"children":-1},"Migration from Beta to v1","/api/overview/migration","api/1.overview/migration",{"title":285,"path":286,"stem":287,"children":-1},"SDKs","/api/overview/sdks","api/1.overview/sdks",1781012285071]