1"use strict";(globalThis.webpackChunkryno_api_doc=globalThis.webpackChunkryno_api_doc||[]).push([[4855],{6218(e,t,n){n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"api-reference/rate-limits","title":"Rate limits","description":"Request limits per partner account and how to handle 429 responses.","source":"@site/docs/api-reference/rate-limits.mdx","sourceDirName":"api-reference","slug":"/api-reference/rate-limits","permalink":"/docs/api-reference/rate-limits","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":4,"frontMatter":{"sidebar_position":4,"title":"Rate limits","description":"Request limits per partner account and how to handle 429 responses."},"sidebar":"apiSidebar","previous":{"title":"Scopes and entitlements","permalink":"/docs/api-reference/scopes"},"next":{"title":"Errors","permalink":"/docs/api-reference/error-reference"}}');var s=n(4848),i=n(8453);const o={sidebar_position:4,title:"Rate limits",description:"Request limits per partner account and how to handle 429 responses."},a="Rate limits",c={},d=[{value:"Headers",id:"headers",level:2},{value:"When you exceed it",id:"when-you-exceed-it",level:2}];function l(e){const t={code:"code",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"rate-limits",children:"Rate limits"})}),"\n",(0,s.jsxs)(t.p,{children:["Requests are limited ",(0,s.jsx)(t.strong,{children:"per partner account"}),", across all your tokens. The default is ",(0,s.jsx)(t.strong,{children:"100 requests per minute"}),". Contact your account manager if you need more."]}),"\n",(0,s.jsx)(t.h2,{id:"headers",children:"Headers"}),"\n",(0,s.jsx)(t.p,{children:"Successful responses tell you where you stand."}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Header"}),(0,s.jsx)(t.th,{children:"Meaning"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.code,{children:"X-RateLimit-Limit"})}),(0,s.jsx)(t.td,{children:"Your limit per minute."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.code,{children:"X-RateLimit-Remaining"})}),(0,s.jsx)(t.td,{children:"Requests left in the current window."})]})]})]}),"\n",(0,s.jsx)(t.h2,{id:"when-you-exceed-it",children:"When you exceed it"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-http",children:'HTTP/1.1 429 Too Many Requests\nRetry-After: 60\n\n{\n "error": "RateLimitExceeded",\n "message": "Rate limit of 100 requests per minute exceeded",\n "retryAfter": 60\n}\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Wait for the ",(0,s.jsx)(t.code,{children:"Retry-After"})," seconds, then resume. Watch ",(0,s.jsx)(t.code,{children:"X-RateLimit-Remaining"})," to slow down before you hit the limit, and cache access tokens instead of requesting one per call."]})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453(e,t,n){n.d(t,{R:()=>o,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function o(e){const t=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.