OnmIAOnmIA API Docs

Rate limiting

Token bucket por chave (120 req/min default), 429 RATE_LIMITED com Retry-After, backoff recomendado e teto global por IP.

Cada chave tem um token bucket próprio. O default é 120 requisições por minuto, com reposição contínua — não é janela fixa; os tokens voltam proporcionalmente ao tempo decorrido.

  • O limite é configurável por chave na emissão. Se seu volume legítimo passa de 120/min, combine um limite maior com a OnmIA.
  • Estouro retorna 429 RATE_LIMITED com o header Retry-After em segundos (inteiro, mínimo 1). Respeite-o.

Teto global por IP

Além do limite por chave, existe um limitador global de infraestrutura de 300 req/min por IP de origem. Se você concentra várias integrações atrás do mesmo IP de saída, considere esse teto agregado.

Cliente recomendado

Ao receber 429, aplique backoff exponencial com jitter e respeite o Retry-After:

ao receber 429:
  aguardar max(Retry-After, backoff_atual)
  backoff_atual = min(backoff_atual * 2, 60s) + jitter aleatorio (0-1s)
ao receber 2xx:
  backoff_atual = 1s

Exemplo em JavaScript:

let backoff = 1000 // ms

async function withRateLimit(doRequest) {
  while (true) {
    const res = await doRequest()
    if (res.status !== 429) {
      backoff = 1000
      return res
    }
    const retryAfter = Number(res.headers.get('Retry-After') ?? 1) * 1000
    const jitter = Math.random() * 1000
    await sleep(Math.max(retryAfter, backoff) + jitter)
    backoff = Math.min(backoff * 2, 60000)
  }
}

Nunca faça retry em loop apertado

Retry imediato sem espera só consome o próprio orçamento de requisições e prolonga o 429. Sempre aguarde antes de reenviar.

On this page