{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-@l10n/en/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":["The Auvo API allows ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["400 requests per minute per IP"]},". When exceeded:"]},{"$$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":"recommended-strategy","__idx":1},"children":["Recommended strategy"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Exponential backoff"]}," with 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 did not clear after 5 attempts');\n}\n","lang":"ts"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Controlled parallelism"]}," — cap at 4 concurrent requests per worker."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Batch + cache"]}," for slow-moving data (e.g. categories)."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Separate IPs"]}," when possible (one IP per environment/client) to avoid"," ","contention across applications."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"why-400min","__idx":2},"children":["Why 400/min"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The limit covers typical sync flows (up to ~23k req/hour). For higher"," ","throughput open a ticket at help@auvo.com.br describing the use case — we can"," ","evaluate a temporary increase."]}]},"headings":[{"value":"Rate limit","id":"rate-limit","depth":1},{"value":"Recommended strategy","id":"recommended-strategy","depth":2},{"value":"Why 400/min","id":"why-400min","depth":2}],"frontmatter":{"title":"Rate limit","description":"400 requests per minute per IP policy and backoff strategies.","seo":{"title":"Rate limit"}},"lastModified":"2026-04-24T13:01:34.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/en/guides/rate-limit","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}