Este guia leva você do nada à primeira conexão bancária. Ao final, você terá um Item conectado (usando o sandbox, sem nenhum banco real) e terá lido contas e transações.
O clientSecret e o apiKey vivem apenas no seu backend. O navegador só pode ver o connectToken (válido por 30 minutos). Nunca envie clientId/clientSecret/apiKey ao cliente.
1

Pegue suas credenciais no Dashboard

Acesse o Dashboard, crie uma Application e copie o clientId e o clientSecret. Guarde-os como variáveis de ambiente no seu servidor (por exemplo, MALVO_CLIENT_ID e MALVO_CLIENT_SECRET).
2

Troque as credenciais por um apiKey

No backend, chame POST https://api.malvo.io/auth para obter um apiKey (header X-API-KEY, com validade de 2 horas).
Faça cache do apiKey e renove-o de forma proativa (por exemplo, antes de 1h50). Em um 401 nas rotas de dados, refaça o POST /auth uma vez e tente de novo.
3

Gere um connectToken

Ainda no backend, troque o apiKey por um connectToken (accessToken) — o token de 30 minutos que dirige o widget. Use includeSandbox no widget para testar sem banco real.
Exponha esse passo como um endpoint autenticado no seu backend (ex.: POST /api/malvo/connect-token) que devolve um accessToken novo a cada vez.
4

Abra o Connect Widget no frontend

Com o accessToken em mãos, abra o widget. Ative includeSandbox para que o conector Malvo Bank Open Finance (sandbox) apareça na lista e você possa testar o fluxo completo.
No sandbox, o conector Malvo Bank Open Finance pede só o CPF e redireciona para um banco fictício. Use as credenciais de teste ([email protected] / P@ssword01) para concluir o consentimento e gerar o Item.
onSuccess é best-effort. Não dispare lógica de negócio crítica nele — o usuário pode fechar a aba antes. Use os webhooks como fonte da verdade.
5

Receba o webhook e leia os dados

Quando o Item é criado e sincronizado, a Malvo envia os webhooks item/created e, ao concluir a coleta, item/updated para o seu webhookUrl. Esse é o sinal para ler os dados no servidor.
Webhook item/created
Com o itemId, leia contas e transações usando o X-API-KEY (sempre server-side):
As transações já chegam categorizadas. Prefira sempre GET /v2/transactions (versão cursor-based) para sincronização incremental.

Próximos passos

Connect Widget

Todas as opções de inicialização, callbacks e o fluxo OAuth do Open Finance.

Webhooks

Configure e valide os eventos que governam o ciclo de vida dos Items.

Sincronizar transações

Paginação por cursor em /v2/transactions e atualizações incrementais.

Referência da API

O playground interativo e o detalhamento de cada endpoint.