---
url: https://developers.zarv.com/sdk.md
description: >-
  Um único loader, js.zarv.com/sdk.js, serve o Chat e o Smartflow sob o mesmo
  window.Zarv. Instalação, chave pública e contrato imperativo.
---

# SDK Zarv

O SDK Zarv é um único loader que serve dois produtos sob o mesmo `window.Zarv`:

* **[Chat](/sdk/chat)** — o widget de conversa que aparece como um launcher no canto da página.
* **[Smartflow](/sdk/smartflow)** — o funnel de cadastro/KYC embutido na sua aplicação.

Você carrega um único script e escolhe qual produto usar pela forma como o configura.

## Instalação

Adicione o loader à sua página:

```html
<script async src="https://js.zarv.com/sdk.js"></script>
```

`js.zarv.com` é o único host que você usa — em produção, em homologação e na sua máquina.

Para testar sem afetar dados reais, use uma campanha/bot de teste (criada no admin) em vez de um ambiente separado — a chave pública é o que separa um do outro.

O SDK roda em qualquer origem — não há restrição de CORS para o JavaScript do loader, então `localhost` funciona sem configuração.

## Versionamento

O loader lê `/sdk/version.json` e carrega os bundles versionados com verificação de integridade (SRI). Novas versões são publicadas automaticamente, então integrar via `sdk.js` sempre traz a versão mais recente sem mudanças do seu lado — é o que recomendamos.

O manifesto descreve cada produto separadamente: versão, arquivos e os hashes SRI correspondentes.

```json
{
  "loader": "0.38.0",
  "chat": {
    "version": "0.80.5",
    "file": { "js": "widget.0ae8404e.js", "css": "widget.7a2f16d4.css" },
    "integrity": { "js": "sha384-…", "css": "sha384-…" }
  },
  "smartflow": {
    "version": "0.40.0",
    "file": { "js": "smartflow.c85d54b9.js", "css": "smartflow.a3ffc7e0.css" },
    "integrity": { "js": "sha384-…", "css": "sha384-…" }
  }
}
```

O caminho de um bundle é `/sdk/<produto>/v<versão>/<arquivo>`, e o `<arquivo>` **é derivado do conteúdo** — muda a cada build. Ou seja, você não consegue montá-lo à mão: tanto o nome quanto o `integrity` precisam sair do `version.json`. É por isso que esses caminhos podem ser servidos com cache imutável.

Se você precisa **fixar uma versão** (reprodutibilidade, auditoria), leia o manifesto uma vez, guarde o par arquivo + `integrity` daquele build e sirva o `<script>` você mesmo:

```html
<script
  async
  src="https://js.zarv.com/sdk/chat/v0.80.5/widget.0ae8404e.js"
  integrity="sha384-…"
  crossorigin="anonymous"
></script>
```

Fixar significa exatamente isso: você deixa de receber correções automaticamente e passa a ser responsável por atualizar o par. Prefira o `sdk.js`.

## Próximos passos

* [Chat](/sdk/chat) — configuração declarativa do widget de conversa.
* [Smartflow](/sdk/smartflow) — configuração imperativa do funnel de cadastro/KYC.
