Analise cabeçalhos de limite e calcule a redefinição
Um limite de 100 com 42 restantes e redefinição 60 às 12:00 UTC significa que as requisições voltam às 12:01, em 60 segundos. Cole os três valores e o horário em que os recebeu para planejar uma nova tentativa segura. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Limite
- 100
- Restante
- 42
- Redefinição
- 60
- Hora atual
- 2026-07-25T12:00:00Z
- Limite
- 100
- Restante
- 42
- Tipo de redefinição
- seconds_offset
- Redefinição em tempo Unix
- 1.784.980.860
Cabeçalhos de limite parecem simples até que cada serviço expresse a redefinição de uma forma diferente. Este analisador recebe limite, quantidade restante, valor de redefinição e horário atual explícito; depois retorna números normalizados e os segundos inteiros até as requisições voltarem a ficar disponíveis. Ele reconhece timestamps Unix em segundos ou milissegundos, horários UTC ISO 8601 estritos e pequenos deslocamentos numéricos. Como você fornece o horário atual, a mesma entrada sempre produz o mesmo resultado.
Como o valor de redefinição é interpretado
Os cabeçalhos de limite costumam trazer três números: o máximo permitido, quantas requisições ainda restam e quando a cota volta. O problema é que cada serviço escreve esse último valor de um jeito. Números pequenos, como 30 ou 900, são tratados como segundos a somar ao horário informado. A partir de um bilhão, o valor é lido como segundos Unix; a partir de cem bilhões, como milissegundos Unix, convertidos para segundos. Também é aceita uma data e hora em UTC com Z no final. Com limite 100, 42 restantes e redefinição 60 às 12:00 UTC, a cota volta às 12:01, em 60 segundos.
Erros comuns e como usar o resultado
O erro mais caro é tratar um valor ilegível como zero: o programa tenta de novo na hora, piora o bloqueio e prolonga a falha. Aqui, um valor que não pode ser lido gera um erro claro. Também são recusados números negativos, datas impossíveis e um total restante maior que o limite. O tempo de espera é arredondado para cima, para não tentar de novo na última fração de segundo, e uma redefinição já passada dá zero. Depois, cabe ao seu programa decidir se espera, coloca o trabalho na fila, reduz a concorrência ou mostra um aviso.
Entenda a distinção entre timestamps e deslocamentos
Valores numéricos de reset seguem convenções comuns. A partir de um bilhão, o número é tratado como segundos Unix; a partir de cem bilhões, representa milissegundos Unix e é convertido. A validação identifica datas impossíveis, campos de horário inválidos, ausências, negativos e textos sem relação.
Um reset ilegível gera erro de entrada em vez de virar zero silenciosamente, pois uma repetição imediata acidental pode agravar a limitação e prolongar uma indisponibilidade.
Casos de uso
Agende uma repetição segura
Converta strings de cabeçalho em um atraso de segundos inteiros antes de recolocar o trabalho na fila.
Investigue limitações do fornecedor
Normalize cabeçalhos capturados e compare a redefinição com o instante exato da resposta.
Crie testes de repetição determinísticos
Forneça um horário fixo e confirme cálculos estáveis sem simular o relógio do sistema.
Perguntas frequentes
Quais formatos de redefinição são aceitos?
Use deslocamentos não negativos em segundos, timestamps Unix em segundos ou milissegundos, ou horários UTC ISO 8601 estritos terminados em Z.
A ferramenta faz uma requisição ou aguarda?
Não. Ela apenas valida e normaliza seus valores; seu aplicativo continua responsável pela repetição e pelo retrocesso.
O que acontece se o momento de redefinição já passou?
A espera é zero, nunca negativa. Isso ajuda ao revisar registros arquivados ou avisos que chegaram atrasados, porque o resultado mostra que já é possível tentar de novo, sem inventar um tempo de espera.
Por que preciso informar o horário atual?
Para que nenhum relógio do sistema mude a resposta: os mesmos dados sempre dão o mesmo resultado. Use o instante em que recebeu a resposta, em segundos ou milissegundos Unix ou como data UTC; ele nunca é tratado como deslocamento.
E se as restantes forem maiores que o limite?
A entrada é recusada. Limite e restantes precisam ser números inteiros não negativos, e as restantes não podem passar do limite. Uma redefinição ilegível também gera erro em vez de zero, para evitar novas tentativas imediatas.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/security/rate-limit-header-parse \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"limit":"100","remaining":"42","reset":"60","current_time":"2026-07-25T12:00:00Z"}'const res = await fetch("https://api.kit.forhosting.com/security/rate-limit-header-parse", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"limit": "100",
"remaining": "42",
"reset": "60",
"current_time": "2026-07-25T12:00:00Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/security/rate-limit-header-parse",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"limit": "100",
"remaining": "42",
"reset": "60",
"current_time": "2026-07-25T12:00:00Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/security/rate-limit-header-parse", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"limit":"100","remaining":"42","reset":"60","current_time":"2026-07-25T12:00:00Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"limit":"100","remaining":"42","reset":"60","current_time":"2026-07-25T12:00:00Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/security/rate-limit-header-parse", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"limit": "100",
"remaining": "42",
"reset": "60",
"current_time": "2026-07-25T12:00:00Z"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "security.rate_limit_header_parse",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Normalize cabeçalhos antes de agendar novas tentativas
Se a redefinição já passou, a espera é zero, nunca negativa. A saída serve para logs, middleware de repetição, atrasos de filas e testes, sem duplicar as mesmas regras em cada integração. As API normalmente informam o máximo de requisições, a quantidade restante e um valor de redefinição, mas o cliente ainda precisa transformar essas strings em uma decisão segura. Envie os valores como limit, remaining e reset e informe em current_time o instante em que a resposta chegou. O analisador confirma que limit e remaining são inteiros não negativos e rejeita uma quantidade restante maior que o limite. Ele preserva o texto original de reset, indica se interpretou o valor como timestamp absoluto ou deslocamento em segundos e fornece um horário Unix normalizado. seconds_until_reset é arredondado para cima, evitando que você tente novamente na última fração do intervalo.
Entenda a distinção entre timestamps e deslocamentos
Números menores e não negativos são deslocamentos somados a current_time. Assim, 30 ou 900 funcionam como atrasos, enquanto timestamps atuais permanecem absolutos. reset também aceita um horário UTC ISO 8601 estrito, como 2026-07-25T12:01:00Z, com milissegundos opcionais. O sufixo UTC elimina suposições de fuso. current_time aceita os mesmos formatos absolutos, mas nunca é deslocamento.
Use uma saída determinística em clientes e testes
Uma política de repetição deve separar análise e decisão. Um deslocamento de 60 com horário atual exatamente ao meio-dia sempre gera um timestamp um minuto posterior e sessenta segundos restantes. O analisador não deduz cabeçalhos específicos nem escolhe retrocesso exponencial; ele trata os valores já extraídos. Use esta capacidade para estabelecer os fatos da cota e deixe seu aplicativo decidir se deve aguardar, enfileirar, reduzir concorrência ou exibir uma mensagem. current_time é fornecido de propósito: relógio do sistema, rede, localidade e aleatoriedade não alteram a resposta. Por isso, o cálculo no navegador coincide com o cálculo da API, e testes permanecem estáveis meses depois. Timestamps anteriores ao horário informado geram zero, útil para webhooks atrasados ou logs arquivados. A versão no navegador é gratuita, e chamadas automatizadas usam o preço-base exibido de US$ 0,002 por item.
Perguntas técnicas
Quanto custa uma chamada de API?
Cada item usa o preço-base indicado como US$ 0,002; a ferramenta do navegador executa localmente o mesmo cálculo.
Por que preciso fornecer current_time?
Um horário explícito mantém o cálculo determinístico e permite reproduzir resultados em clientes e testes.
O que ocorre quando a redefinição já passou?
seconds_until_reset fica limitado a zero, enquanto reset_at_unix ainda informa o instante absoluto analisado.