Garu

2026-09-13

v0.24.0 — Chaves sk_test_ deixam de funcionar na API pública

apisegurancabreaking

Se você integra com uma chave sk_test_, ela passa a responder 403. Troque por uma sk_live_.

Por que

Uma chave de API carrega um ambiente — test ou live. Esse campo era gravado na chave e no request, e não era consultado em lugar nenhum.

Na prática isso significa que uma chave sk_test_ nunca foi de teste. Ela lia e alterava exatamente os mesmos dados que uma sk_live_, no mesmo banco. E como não existe sandbox — garu.com.br/api fala com o processador de pagamento real — uma cobrança criada com chave de teste era uma cobrança real, na conta real.

Pior: a nossa própria documentação dizia o contrário. O guia da API listava um "Sandbox" apontando para a mesma URL de produção e descrevia sk_test_ como "para desenvolvimento e testes (sem cobranças reais)". Quem seguisse a documentação ao pé da letra criaria cobranças de verdade achando que não.

Recusar a chave é a resposta honesta enquanto não existir um sandbox de verdade. A alternativa — deixar passar e avisar na documentação — mantinha de pé um jeito silencioso de mover dinheiro por engano.

O que muda para você

  • Usa sk_live_? Nada muda.
  • Usa sk_test_? Gere uma chave sk_live_ no painel, em Configurações → Desenvolvedores, e troque. A resposta enquanto não trocar é 403 com a explicação.
  • Quer experimentar sem mover muito dinheiro? Use uma sk_live_ num produto barato e estorne depois. É o que já acontecia; agora está dito com todas as letras.

Corrigimos o guia da API junto: a linha do "Sandbox" saiu, e o trecho sobre sk_test_ agora descreve o que a chave faz de verdade.

Chaves afetadas

Oito chaves de teste existem hoje, de seis contas. Duas chegaram a ser usadas alguma vez, a última em 9 de julho — dois meses atrás. Nenhuma delas fez cobrança ou estorno. Na prática, quase ninguém sente essa mudança; ela fecha um caminho que estava aberto, não um que estava em uso.