Separe usuário, tarefa e conta de pagamento
O usuário do produto, a tarefa interna e a conta do domínio que paga as leituras são identidades diferentes. Seu backend relaciona as duas primeiras e verifica a permissão. O navegador deve receber o resultado autorizado. Se receber a chave compartilhada, seu portador poderá iniciar consultas pagas fora dos limites colocados na tela.
Não publique a chave em código do navegador, repositórios, arquivos para download ou registros. Você pode carregá-la por uma variável de ambiente do servidor ou por um gerenciador de segredos. Isso separa configuração e código, mas não impede por si só que uma ferramenta de depuração ou exceção revele o valor. Revise também cabeçalhos, respostas de erro e cópias de configuração que saiam da sua infraestrutura.
Monte uma solicitação permitida
Fixe o host do arquivo e a rota permitida para a primeira tarefa. Monte q=onboarding, subreddit=SaaS e limit=3 com valores validados e acrescente a chave apenas na saída da solicitação. Não envie esse cabeçalho a uma URL arbitrária informada pelo visitante. A autorização da tarefa precisa estar resolvida antes desse ponto.
Para investigar o custo da tarefa de onboarding, seu registro local precisa do identificador do trabalho, dos filtros e do número da tentativa, não do cabeçalho que contém o segredo. O cliente HTTP pode enviar X-API-Key: <chave> ou Authorization: Bearer <chave> a partir de uma configuração protegida do servidor. Exclua a chave do código público, das respostas ao navegador e da saída de diagnóstico. O cookie Secure HttpOnly gerencia a sessão da conta; os identificadores de fatura e usuário guardados pelo widget no localStorage por hostname também não substituem a credencial de recuperação. Revise esse caminho ao ligar o controle de custos, sem presumir que a separação elimina todo risco de exposição.
Registre a tentativa antes de repetir
Dê à tarefa um identificador interno e um pequeno limite de tentativas. Registre rota, filtros, número da tentativa e desfecho, sem cabeçalhos de autenticação. Uma política de exemplo permite três tentativas ao todo, incluindo páginas adicionais e repetições. É uma regra do produto, não uma cota por usuário ou um registro de tarefas fornecido pelo arquivo.
Considere uma sequência difícil de contabilizar: o primeiro sucesso vazio custa um crédito; a segunda resposta se perde e pode ter custado outro; uma repetição bem-sucedida custa mais um. Não classifique a resposta perdida como falha gratuita. Falhas do sistema de origem devolvem a reserva, mas um erro local de leitura ou armazenamento não cancela o sucesso cobrado.
Salve a resposta antes de interpretá-la
Salve a resposta antes de prepará-la para a tela. Os registros são planos; campos podem faltar e parent_id ou link_id podem apontar para material não recebido. Agrupá-los não comprova conversas completas. Datas usam YYYY-MM-DD em UTC, com o dia to incluído. q busca em title e text com AND dentro do campo correspondente; min_score filtra, e _doc não representa classificação nem cronologia.
Troque a chave sem presumir sobreposição
Prepare a substituição interrompendo a entrada de novas tarefas. Depois do login e da confirmação da senha, a regeneração invalida a chave anterior imediatamente. Atualize os processos que fazem consultas antes de retomá-los. Não dependa de um período de sobreposição. Restrinja quem pode ler o novo valor durante a entrega e mantenha-o fora dos diagnósticos.
Um limite local controla apenas as consultas que passam pelo seu backend. Ele não impede o uso direto de uma chave vazada. Compare suas tentativas com o contexto da conta ao investigar, sem tratar um aumento de volume como prova de vazamento. Trocar a chave não recupera créditos gastos. Guarde também a senha: não há redefinição nem envio de chave por email.
Verifique o percurso com uma tarefa pequena
Por fim, execute uma tarefa pequena e examine o resultado real. Em 400 verifique parâmetros; em 401, a chave; em 402, o saldo; em 429, a frequência. São até 100 registros por solicitação e 100 páginas por consulta, sem garantia de cobertura completa. /v1/status oferece uma descrição estática, não verifica a saúde do arquivo. Salvar a amostra e decidir parar também pode encerrar a tarefa corretamente.