{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Rate limit","description":"Documentação oficial, guias e referência da API Auvo v2.","siteUrl":"https://developers.auvo.com.br","lang":"pt-BR","keywords":"auvo, api, documentação, developers, field service, workforce","meta":[{"name":"og:site_name","content":"Auvo Developers"},{"name":"og:locale","content":"pt_BR"},{"name":"og:locale:alternate","content":"es_ES"},{"name":"og:locale:alternate","content":"en_US"},{"name":"twitter:card","content":"summary_large_image"},{"name":"twitter:site","content":"@auvoapp"}],"llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"rate-limit","__idx":0},"children":["Rate limit"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A API Auvo limita ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["400 requisições por minuto por IP"]},". Ao exceder, a resposta é:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"HTTP/1.1 403 Forbidden\nContent-Type: application/json\n\n{ \"error\": \"Rate limit temporarily exceeded\" }\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"estratégia-recomendada","__idx":1},"children":["Estratégia recomendada"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Backoff exponencial"]}," com jitter:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"ts","header":{"controls":{"copy":{}}},"source":"async function withBackoff(fn) {\n  for (let attempt = 0; attempt < 5; attempt++) {\n    const res = await fn();\n    if (res.status !== 403) return res;\n    const wait = (2 ** attempt) * 250 + Math.random() * 250;\n    await sleep(wait);\n  }\n  throw new Error('Rate limit não liberou após 5 tentativas');\n}\n","lang":"ts"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Paralelismo controlado"]}," — limite a 4 requisições concorrentes por worker."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Batch + cache"]}," em dados lentos (ex.: cadastro de categorias)."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Separe IPs"]}," quando possível (um IP por ambiente/cliente) para evitar"," ","contenda entre aplicações."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"por-que-400min","__idx":2},"children":["Por que 400/min"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["O limite é suficiente para fluxos típicos de sincronização (até ~23k req/hora)."," ","Para throughputs maiores, abra um ticket em help@auvo.com.br descrevendo o caso"," ","— podemos avaliar aumento temporário."]}]},"headings":[{"value":"Rate limit","id":"rate-limit","depth":1},{"value":"Estratégia recomendada","id":"estratégia-recomendada","depth":2},{"value":"Por que 400/min","id":"por-que-400min","depth":2}],"frontmatter":{"title":"Rate limit","description":"Política de 400 requisições por minuto por IP e estratégias de backoff.","seo":{"title":"Rate limit"}},"lastModified":"2026-04-24T13:01:34.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/rate-limit","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}