> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zapmeow.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuração

> Variáveis de ambiente e armazenamento.

| Variável | Obrigatória | Padrão | Uso |
| - | - | - | - |
| `DATABASE_URL` | sim | | Postgres (`postgres://usuário:senha@host:5432/banco`) |
| `ZAPMEOW_API_KEY` | sim | | chave de API, 16+ caracteres |
| `PORT` | não | `8080` | porta HTTP |
| `DATA_DIR` | não | `./data` | cache de mídia, uma pasta por sessão |
| `PUBLIC_URL` | não | `http://127.0.0.1:$PORT` | base das URLs de mídia que vão nos eventos |
| `ZAPMEOW_ADMIN_KEY` | não | | chave da API `/admin` (16+ caracteres, diferente da `ZAPMEOW_API_KEY`); vazia, `/admin` responde `503` |
| `ZAPMEOW_MASTER_KEY` | não | | chave do cofre de tokens: 32 bytes em hex (`openssl rand -hex 32`) ou base64; vazia, o cofre fica desligado |
| `CONVEX_WEBHOOK_URL` | não | | destino do webhook do tenant Glow ao Convex |
| `CONVEX_WEBHOOK_TOKEN` | não | | enviado em `X-Webhook-Token` ao Convex |
| `GHL_CLIENT_ID`, `GHL_CLIENT_SECRET` | não | | app do Marketplace do GoHighLevel (OAuth2); veja [GoHighLevel](https://docs.zapmeow.com/api-reference/ghl.md) |
| `GHL_REDIRECT_URI`, `GHL_SCOPES`, `GHL_POST_INSTALL_URL`, `GHL_WEBHOOK_PUBKEY` | não | | ajustes do OAuth e do webhook do GHL |
| `ZAPMEOW_VOICE` | não | desligada | `1` liga a ligação por voz ([guia](https://docs.zapmeow.com/guides/voice.md)); precisa de build com cgo (o Dockerfile já tem) |
| `ZAPMEOW_VOICE_TETO` | não | `20` | teto diário padrão de ligações de uma sessão nova |
| `ZAPMEOW_VOICE_ORIGINS` | não | | origens extras aceitas no WebSocket de áudio |
| `ELEVENLABS_API_KEY`, `ELEVENLABS_AGENT_ID` | não | | recuo do tenant Glow para o agente de voz (chave e agente padrão; os demais tenants usam o cofre, [guia](https://docs.zapmeow.com/guides/voice.md)); a chave também serve ao TTS do tenant Glow ([humanizador](https://docs.zapmeow.com/api-reference/outbox.md)) |
| `ZAPMEOW_TTS_FORMAT` | não | `opus_48000_32` | formato de saída do TTS ElevenLabs; Ogg Opus sai como nota de voz |
| `VOZ_EVENT_URL`, `VOZ_EVENT_TOKEN` | não | | recuo do tenant Glow para o aviso de andamento da ligação ao Convex (os demais usam `eventUrl` na config da sessão) |
| `VOZ_NOISE_GATE` | não | ligado | `0` manda o áudio do lead cru, sem RNNoise |

## O que fica no Postgres

| Onde | O quê |
| - | - |
| `public.whatsmeow_*` | chaves e aparelhos de cada sessão (tabelas do whatsmeow) |
| `public.zm_sessions` | nome, `config` (webhooks), JID, parada ou não, `tenant_id` |
| `public.zm_tenants` | tenants (subcontas): id, nome, `kind`, location e agência do GHL, `convex_webhook` |
| `public.zm_config` | config por tenant e seção (`voice`, `humanizer`, `roles`) |
| `public.zm_voice`, `public.zm_voice_usage` | ligação por voz: config e hash do token por sessão; ligações por dia (teto) |
| `public.zm_secrets` | tokens por tenant, cifrados (AES-256-GCM) |
| `public.zm_toollog` | chamadas de tool por tenant |
| `public.zm_outbox`, `public.zm_outbox_notice` | fila do humanizador (texto e áudio com prévia) e conversas que já receberam o aviso de assistente virtual |
| schema `s_<nome>` | `msgs`, `chatstate`, `chat_names`, `labels`, `meta` da sessão |

Excluir uma sessão (`DELETE /api/sessions/{nome}`) apaga o schema inteiro dela.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.