{"templateId":"markdown","sharedDataIds":{},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Rate Limits","description":"APIs públicas da Movvia para parceiros, estabelecimentos comerciais e clientes de dados veiculares.","meta":[{"name":"theme-color","content":"#7E3DEE"},{"name":"apple-mobile-web-app-title","content":"Movvia Docs"},{"name":"application-name","content":"Movvia Docs"}],"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-limits","__idx":0},"children":["Rate Limits"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A API Movvia aplica limites de requisição por credencial para garantir estabilidade do serviço. Os limites variam por persona e por plano contratado."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"limites-por-persona","__idx":1},"children":["Limites por persona"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"parceiros","__idx":2},"children":["Parceiros"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Janela"},"children":["Janela"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Limite (plano Partner)"},"children":["Limite (plano Partner)"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Por minuto"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1.000 req/min"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Por hora"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["10.000 req/hora"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Limites customizados estão disponíveis para o plano Enterprise. Para negociar, contate ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:comercial@movvia.com.br"},"children":["comercial@movvia.com.br"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"vision-dados-e-estabelecimentos-comerciais","__idx":3},"children":["Vision Dados e Estabelecimentos Comerciais"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Limites específicos para estas personas: consultar comercial no onboarding."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"resposta-quando-o-limite-é-excedido","__idx":4},"children":["Resposta quando o limite é excedido"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Quando o limite é ultrapassado, a API retorna ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["429 Too Many Requests"]},"."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"HTTP/1.1 429 Too Many Requests\nRetry-After: 30\nContent-Type: application/json\n\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"RATE_LIMIT_EXCEDIDO\",\n    \"message\": \"Limite de requisições excedido. Tente novamente em 30 segundos.\"\n  }\n}\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["O header ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Retry-After"]}," indica em quantos segundos você pode tentar novamente."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"como-lidar-com-429","__idx":5},"children":["Como lidar com 429"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Implemente backoff exponencial com jitter nas retentativas:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"async function chamarComRetry(fn: () => Promise<Response>, maxTentativas = 3): Promise<Response> {\n  for (let i = 0; i < maxTentativas; i++) {\n    const res = await fn();\n    if (res.status !== 429) return res;\n\n    const retryAfter = Number(res.headers.get('Retry-After') ?? 2 ** i);\n    const jitter = Math.random() * 1000;\n    await new Promise(r => setTimeout(r, retryAfter * 1000 + jitter));\n  }\n  throw new Error('Limite de tentativas excedido');\n}\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"success","name":"Plano Explorer"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["No plano Explorer (sandbox), os limites são mais restritivos. Para testes de carga ou validação de volume, solicite um ambiente dedicado via ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:comercial@movvia.com.br"},"children":["comercial@movvia.com.br"]},"."]}]}]},"headings":[{"value":"Rate Limits","id":"rate-limits","depth":1},{"value":"Limites por persona","id":"limites-por-persona","depth":2},{"value":"Parceiros","id":"parceiros","depth":3},{"value":"Vision Dados e Estabelecimentos Comerciais","id":"vision-dados-e-estabelecimentos-comerciais","depth":3},{"value":"Resposta quando o limite é excedido","id":"resposta-quando-o-limite-é-excedido","depth":2},{"value":"Como lidar com 429","id":"como-lidar-com-429","depth":2}],"frontmatter":{"title":"Rate Limits","description":"Limites de requisição por persona na API Movvia e como lidar com respostas 429.","seo":{"title":"Rate Limits"}},"lastModified":"2026-04-25T15:17:56.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/compartilhado/seguranca/rate-limits","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}