Autenticação e chaves de API
Como criar uma chave de API no painel, o formato vk_live_…, os escopos de leitura e escrita, como enviar a chave em cada requisição, como revogar, como testar sem modo de teste e o que cada erro 401 e 403 significa.
Toda requisição à API leva uma chave de API da loja. A chave identifica a loja e diz o que a requisição pode fazer. Não há usuário, senha nem sessão: quem tem a chave tem o acesso.
Antes de começar
- Papel Admin ou Dono na loja.
- A API ativa para a loja (vem ativa por padrão). Veja abaixo.
Criar uma chave
- Abra GeralConfigurações › Desenvolvedores.
- Crie uma chave nova. Dê um nome que diga onde ela vai ser usada, como "ERP" ou "Servidor de produção", e escolha os escopos.
- Copie o valor completo,
vk_live_…. Ele aparece uma vez só. Depois disso, o painel mostra apenas os últimos quatro caracteres.
Cada chave fica presa a uma versão da API, a versão atual no dia em que ela foi criada. Veja Versão.
O passo a passo com o que o painel mostra está em Desenvolvedores: chaves e logs.
Formato da chave
vk_live_AbCdEfGhIjKlMnOpQrStUvWxYz0123456789AbCdEfGh| Parte | Tamanho | Para que serve |
|---|---|---|
vk_live_ | 8 | Prefixo fixo. Diferencia uma chave do Vipter de uma sk_live_ da Stripe no mesmo .env. |
| Identificador | 12 caracteres | Localiza a chave. Não é secreto. |
| Segredo | 32 caracteres | A parte que prova a posse. O Vipter guarda só um hash dela. |
Letras e números, sem outros caracteres. Qualquer chave com outro formato é recusada com 401 invalid_api_key antes de consultar o banco.
Só existe o prefixo live. O Vipter não tem modo de teste; veja Testar sem modo de teste.
Escopos
| Escopo | O que libera | Métodos |
|---|---|---|
read | Consultar conta, clientes, assinaturas, pedidos, ofertas e produtos. | GET |
write | Criar e alterar dados: sessões de checkout, clientes e sessões do portal do cliente. | POST, DELETE |
Uma chave pode ter um ou os dois escopos. Uma requisição a um endpoint sem o escopo necessário recebe 403 insufficient_scope. Para uma integração que só lê dados, crie a chave só com read.
Usar a chave
Envie a chave no cabeçalho Authorization, como um token Bearer:
curl https://api.vipter.com/v1/account \
-H "Authorization: Bearer vk_live_AbCdEfGhIjKlMnOpQrStUvWxYz0123456789AbCdEfGh"A API também aceita HTTP Basic com a chave como usuário e senha vazia, o mesmo hábito dos exemplos da Stripe com -u. As duas formas são equivalentes:
curl https://api.vipter.com/v1/account \
-u vk_live_AbCdEfGhIjKlMnOpQrStUvWxYz0123456789AbCdEfGh:Os dois pontos no fim dizem ao curl que a senha é vazia. Sem eles, o curl pede a senha no terminal.
A chave vale para https://api.vipter.com/v1 e para https://app.vipter.com/api/v1; veja Endereço base.
Guardar a chave
- Guarde a chave numa variável de ambiente ou num cofre de segredos. Nunca no código-fonte, num repositório ou numa página servida ao navegador.
- Use uma chave por sistema e por ambiente. Se uma vazar, você revoga só ela.
- A API não aceita chamadas do navegador com a chave: qualquer um que abrir a página teria a chave. Chame a API do seu servidor.
- Se uma chave apareceu num lugar público, revogue na hora e crie outra. O Vipter não tem como recuperar o valor de uma chave: só o hash do segredo fica gravado.
Revogar uma chave
Na lista de chaves, use a ação de revogar. A chave para de funcionar na mesma hora: a próxima requisição com ela recebe 401 api_key_revoked. Não dá para desfazer. Para trocar uma chave sem parar a integração, crie a nova, publique, confira que a antiga parou de ser usada na coluna de último uso e só então revogue a antiga.
Chaves revogadas continuam na lista, para o histórico. Os logs de requisições mostram qual chave fez cada chamada.
A API vem ativa para toda loja
Não há liberação a pedir: toda loja ativa responde à API assim que tem uma chave. O Vipter pode desligar a API de uma loja específica, por abuso ou pendência na conta. Nesse caso a aba Desenvolvedores avisa e toda requisição, mesmo com uma chave válida, recebe 403 api_not_enabled. Para reativar, fale com o suporte do Vipter e informe o nome da loja. As chaves existentes voltam a funcionar assim que a API é religada.
A API também só responde para lojas ativas. Uma loja suspensa ou em outro estado recebe 403 project_inactive.
Testar sem modo de teste
O Vipter não tem chaves de teste nem um ambiente separado. O teste acontece na mesma loja, com uma conexão de teste do provedor de pagamento:
- Em PagamentosProvedores, crie uma conexão com Conexão de teste ligado. Ela usa o ambiente de testes do provedor e não cobra ninguém de verdade.
- Faça uma compra pelo checkout com essa conexão. Veja Testar a sua loja.
- Consulte o pedido pela API. Um pedido que passou por uma conexão de teste vem com
"livemode": false. Clientes, assinaturas, ofertas e produtos não têm conexão, então vêm com"livemode": true.
Como o teste acontece na loja real, os pedidos de teste aparecem no painel e nos relatórios junto com os de verdade. Use o campo livemode para separá-los no seu sistema.
Erros de autenticação
Todos vêm no formato padrão de erro. Um 401 é sobre a chave; um 403 é sobre o que a chave pode fazer ou sobre a loja.
| HTTP | type | code | Causa | O que fazer |
|---|---|---|---|---|
| 401 | authentication_error | api_key_missing | A requisição não trouxe Authorization, ou trouxe num formato que não é Bearer nem Basic. | Envie Authorization: Bearer vk_live_…. |
| 401 | authentication_error | invalid_api_key | A chave não existe, o segredo está errado, o formato está errado ou a loja foi excluída. A mensagem é a mesma em todos esses casos, de propósito. | Confira se copiou a chave inteira, sem espaços. Se precisar, crie outra. |
| 401 | authentication_error | api_key_revoked | A chave foi revogada no painel. | Crie uma chave nova. |
| 401 | authentication_error | api_key_expired | A chave passou da data de expiração. | Crie uma chave nova. |
| 403 | permission_error | api_not_enabled | A API foi desativada para a loja. | Peça a reativação ao suporte. |
| 403 | permission_error | project_inactive | A loja não está ativa. | Regularize a loja no painel. |
| 403 | permission_error | insufficient_scope | A chave não tem o escopo que o endpoint exige. | Crie uma chave com o escopo certo. |
Requisições sem chave válida são limitadas por endereço IP, a 10 por minuto. Passou disso, a resposta é 429 rate_limit até a janela liberar. Isso protege contra tentativa de adivinhar chaves e não afeta chamadas autenticadas, que têm o próprio limite.
O que fazer a seguir
- Leia as convenções da API: formato, erros, paginação e limites.
- Faça a primeira chamada e veja cada objeto na referência da API.
Visão geral para desenvolvedores
O que dá para integrar com o Vipter hoje (API REST com sessões de checkout, cobranças e ações na assinatura, uso medido, eventos e endpoints de webhook; webhooks assinados em dois catálogos; parâmetros de URL do checkout; script de UTMs; e esta documentação em Markdown), o que vem a seguir e por onde começar.
Convenções da API
O endereço base, o cabeçalho de versão, o formato de requisição e resposta, como dinheiro, datas e IDs são representados, a tabela de erros, idempotência, paginação, limites de requisições, o cabeçalho Request-Id e o que muda em relação à Stripe.