APIs públicas
Cada chave de API recebe um limite por plano, com rajadas para os clientes bem comportados e um Retry-After preciso para o resto.
Limites de taxa atômicos no servidor. GCRA em um comando, ou limitadores nomeados com janela deslizante, token bucket ou leaky bucket. Sem precisar de Lua.
10 requisições por minuto para o usuário 42. A resposta diz que foi permitido, qual é o limite e quantas restam.
Uma demonstração animada com comandos reais do HotKV e respostas de exemplo. Clique em qualquer etapa para ir direto a ela. Os comandos e as respostas ficam em inglês, exatamente como você os digita e vê no HotKV.
Uma API sem limites está a um cliente mal comportado de uma queda. Fazer a verificação no código da aplicação significa uma leitura, um cálculo e uma escrita, e as requisições simultâneas escapam pelas brechas entre eles. Muitos times acabam mantendo um script Lua só para torná-la atômica.
GCRA.LIMIT decide e registra em uma etapa, então clientes simultâneos não conseguem passar os dois com o mesmo estado, e o limite se recompõe de forma suave em vez de zerar nas fronteiras da janela. Para limites que você gerencia pelo nome, RATELIMIT.CREATE configura um limitador de janela deslizante, token bucket ou leaky bucket, com estatísticas do que ele permitiu e negou.
10 requisições por minuto para o usuário 42. A resposta diz que foi permitido, qual é o limite e quantas restam.
GCRA.LIMIT ratelimit:user:42 60000 10O scraper esgota a sua cota de rajada e depois é informado de quanto tempo esperar. Uma requisição negada não muda nada.
GCRA.LIMIT ratelimit:bot:7 60000 10Clientes do plano gratuito recebem 100 requisições por minuto em uma janela deslizante.
RATELIMIT.CREATE free_plan 100 60000 ALGO sliding_windowUm endpoint de exportação custa 20 unidades, então consome mais da cota.
RATELIMIT.CHECK free_plan customer:881 COST 20Configurações, chaves acompanhadas e os totais de requisições permitidas e negadas.
RATELIMIT.STATS free_planCada chave de API recebe um limite por plano, com rajadas para os clientes bem comportados e um Retry-After preciso para o resto.
As tentativas por IP e por conta são limitadas para frear ataques de credential stuffing.
As chamadas a uma API de parceiro ou a um provedor de LLM ficam dentro da cota em todos os workers da frota.
Recomposição suave com rajadas, verificação e atualização atômicas e um tempo de nova tentativa quando há negação.
GCRA.LIMITGCRA.RESETJanela deslizante, token bucket ou leaky bucket, criados uma vez e verificados por chave.
RATELIMIT.CREATERATELIMIT.CHECKChamadas caras podem contar como várias requisições. GCRA.LIMIT recebe uma contagem, e RATELIMIT.CHECK um COST.
COSTTotais de permitidas e negadas por limitador.
RATELIMIT.STATSNão. Tanto GCRA.LIMIT quanto RATELIMIT.CHECK fazem a verificação inteira como um comando atômico.
GCRA.LIMIT não precisa de configuração e funciona em todos os planos. Os limitadores nomeados RATELIMIT.* acrescentam a escolha do algoritmo e estatísticas, e fazem parte dos planos Performance e Scale.
Nada. Uma chamada GCRA negada deixa o limitador inalterado, então um cliente que tenta de novo não é penalizado ainda mais.
O HotKV fala o protocolo Redis, então você pode apontar um cliente existente para ele e executar estes mesmos comandos.