Calculadora de repetição espaçada
A calculadora de repetição espaçada transforma o resultado de uma revisão em uma data concreta para o próximo estudo.
Executar grátis
Roda direto no seu navegador. Grátis, sem cadastro — seus dados não são enviados para lugar nenhum.
Informe a data da revisão atual, o intervalo vigente do cartão em dias e uma nota de recordação de zero a cinco. A ferramenta aplica uma programação SM-2 simplificada e transparente e retorna o próximo intervalo e a respectiva data. Ela é útil para ferramentas de estudo, registros pessoais de aprendizagem e pequenos aplicativos que precisam de uma programação consistente sem banco de dados, estado oculto ou saída imprevisível de modelos.
Descreva o cartão no momento da revisão
Comece pela data em que o estudante revisou o cartão, escrita no formato YYYY-MM-DD. Essa data explícita torna todo cálculo reproduzível: se você enviar amanhã a mesma solicitação, receberá a mesma resposta. Em seguida, informe o intervalo atual como um número inteiro de dias. O valor zero representa um cartão novo que ainda não recebeu um intervalo, enquanto um representa um cartão previsto para o dia seguinte à revisão anterior. Por fim, atribua uma nota de zero a cinco à qualidade da recordação. Zero significa esquecimento total, três é a menor nota de aprovação e cinco indica uma resposta correta e sem esforço. A escala é rigorosa de propósito e aceita apenas números inteiros. Esses três dados claros facilitam a integração da calculadora a um formulário de estudo, uma planilha, uma ferramenta de linha de comando ou um aplicativo de cartões. Eles também evitam dependência acidental do relógio do servidor, do fuso horário do usuário ou de um histórico de revisões que não foi enviado na solicitação.
Entenda o cálculo SM-2 simplificado
Uma qualidade abaixo de três é tratada como falha de recordação. Nesse caso, o próximo intervalo volta para um dia e o estudante revê o conteúdo em breve. A primeira revisão aprovada de um cartão novo também recebe um intervalo de um dia. Quando um cartão já tem intervalo de um dia e é aprovado, o próximo passa a seis dias, conforme a conhecida progressão inicial do SM-2. Nas revisões posteriores aprovadas, o intervalo atual é multiplicado por um fator de facilidade calculado a partir da nota. O fator começa no valor padrão 2.5, aumenta um pouco para uma recordação perfeita e diminui para aprovações mais difíceis, com limite mínimo de 1.3. O resultado é arredondado para o dia inteiro mais próximo. O método é simplificado porque usa o intervalo e a nota fornecidos sem armazenar uma contagem separada de repetições nem um fator histórico. A resposta inclui o intervalo calculado, a próxima data, a qualidade informada e um valor booleano que indica se houve recordação satisfatória.
Use o resultado de modo consistente nos estudos
Salve o próximo intervalo retornado junto ao cartão e programe a data de revisão recebida em sua fila. Na sessão seguinte, envie esse intervalo armazenado com a nova nota e a data daquela revisão. Isso cria um ciclo compacto: conteúdos difíceis reaparecem logo, enquanto conteúdos lembrados com confiança recebem espaços maiores. A calculadora valida datas reais do calendário gregoriano, inclusive anos bissextos, e soma dias no calendário em vez de tratar datas como texto ambíguo. Ela também rejeita notas fracionárias, ausentes ou fora do intervalo, sem tentar adivinhar, o que ajuda a identificar interfaces e importações com defeito. O algoritmo é determinístico e não usa rede, valores aleatórios, relógio atual, perfil do estudante nem inteligência artificial. Assim, atende a testes reproduzíveis e softwares educacionais auditáveis. Considere a programação uma referência prática, não uma promessa clínica: você pode ajustar o plano a prazos, cansaço, dificuldade da matéria ou necessidades de acessibilidade e ainda manter a mesma regra de cálculo transparente.
Casos de uso
Programe seu baralho de estudos
Transforme cada autoavaliação na próxima data prevista sem manter um serviço complexo de agendamento.
Inclua repetição em um aplicativo
Use um endpoint determinístico para atualizar intervalos após o envio das notas de recordação pelos estudantes.
Audite um fluxo de cartões
Recalcule programações salvas com datas, intervalos e notas de qualidade para confirmar resultados consistentes.
Perguntas frequentes
O que significa a nota de qualidade?
Use um inteiro de 0 para falha total até 5 para recordação perfeita e sem esforço. As notas 3, 4 e 5 contam como recordação satisfatória.
O que acontece quando a recordação falha?
Uma qualidade abaixo de 3 redefine o próximo intervalo para um dia, permitindo que o cartão retorne logo.
Este é o algoritmo SM-2 completo?
Não. Ele usa as regras conhecidas de intervalo e fator de qualidade do SM-2, mas não mantém uma contagem separada de repetições nem um fator histórico de facilidade.
Por que preciso informar a data atual?
Uma data de revisão explícita torna o resultado determinístico e evita suposições sobre o relógio do servidor ou seu fuso horário.
A qualidade pode ficar fora de 0 a 5?
Não. Valores fora de 0 a 5, fracionários ou não numéricos retornam um erro de entrada inválida.
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. O cálculo também pode ser usado na experiência gratuita do navegador.
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/life/flashcard-spaced-repetition \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"current_date":"2026-08-05","current_interval":10,"quality":4}'const res = await fetch("https://api.kit.forhosting.com/life/flashcard-spaced-repetition", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"current_date": "2026-08-05",
"current_interval": 10,
"quality": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/flashcard-spaced-repetition",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"current_date": "2026-08-05",
"current_interval": 10,
"quality": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/flashcard-spaced-repetition", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"current_date":"2026-08-05","current_interval":10,"quality":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"current_date":"2026-08-05","current_interval":10,"quality":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/flashcard-spaced-repetition", 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
{
"current_date": "2026-08-05",
"current_interval": 10,
"quality": 4
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.flashcard_spaced_repetition",
"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. |