Pular para o conteúdo principal
Este guia mostra o caminho recomendado para sair do zero até uma instância conectada enviando mensagens pela VZaps.

1. Instale e crie o cliente

pip install vzaps
from vzaps import VZapsClient

with VZapsClient(
    client_token="seu-client-token",
    client_secret="seu-client-secret",
) as client:
    ...

2. Valide autenticação

jwt = client.auth.get_access_token()
print(jwt[:16])
Na maioria dos fluxos, você não precisa chamar get_access_token(). Os recursos do SDK fazem isso automaticamente.

3. Liste instâncias existentes

instances = client.instances.list(
    page=1,
    size=20,
    search="atendimento",
)

print(instances)

4. Crie uma instância

created = client.instances.create(
    name="Atendimento Comercial",
    webhook="https://example.com/webhooks/vzaps",
    events_subscribe=["Message", "ReadReceipt", "Connected", "Disconnected"],
)

print(created)
Guarde da resposta:
  • id: identificador da instância.
  • token: token da instância. Use como instance_token nas chamadas de instância.

5. Assine a instância

subscription = client.instances.subscribe(
    "VZ...",
    {},
    instance_token="instance-token",
)

print(subscription)
Se um cancelamento está agendado e você quer reativar a assinatura:
resumed = client.instances.resume_subscription(
    "VZ...",
    instance_token="instance-token",
)

6. Pareie o WhatsApp

Verifique o status:
status = client.sessions.status("VZ...", instance_token="instance-token")
print(status)
Obtenha o QR code:
qr = client.sessions.qr("VZ...", instance_token="instance-token")
print(qr)
Obtenha o código de pareamento por telefone:
pair_code = client.sessions.pair_code(
    "VZ...",
    "5511999999999",
    instance_token="instance-token",
)
print(pair_code)

7. Configure o webhook

Veja Webhooks para configuração completa, logs e exemplos.
client.webhooks.set(
    instance_id="VZ...",
    instance_token="instance-token",
    webhook_url="https://example.com/webhooks/vzaps",
    events=["Message", "ReadReceipt", "Connected", "Disconnected"],
)

8. Assine o realtime

Veja Realtime para detalhes de assinatura, ack e reconexão.
import asyncio

from vzaps import AsyncVZapsClient

async def main():
    async with AsyncVZapsClient(
        client_token="seu-client-token",
        client_secret="seu-client-secret",
    ) as client:
        async with client.events.subscribe(
            instance_id="VZ...",
            instance_token="instance-token",
            events=["Message", "Connected", "Disconnected"],
            reconnect=True,
        ) as subscription:

            @subscription.on("Message")
            async def on_message(event):
                print(event.id)
                print(event.data)

            @subscription.on_error
            async def on_error(error):
                print(error)

            await subscription.wait_closed()

asyncio.run(main())

9. Envie a primeira mensagem

client.messages.send_text(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    message="Olá! Esta mensagem foi enviada com a VZaps.",
)

10. Envie mídia

Imagem:
client.messages.send_image(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    image="https://example.com/imagem.jpg",
    caption="Imagem enviada com a VZaps",
)
Documento:
client.messages.send_document(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    document="https://example.com/contrato.pdf",
    file_name="contrato.pdf",
    caption="Aqui está o contrato",
)
Veja Mensagens para todos os tipos de envio e payloads.

11. Verifique filas

Veja Filas para listar, remover e limpar filas.

12. Trate erros

from vzaps.errors import VZapsAuthenticationError, VZapsError, VZapsTimeoutError

try:
    client.messages.send_text(
        instance_id="VZ...",
        instance_token="instance-token",
        phone="5511999999999",
        message="Olá",
    )
except VZapsAuthenticationError:
    print("Credenciais inválidas")
except VZapsTimeoutError:
    print("Requisição expirou")
except VZapsError as error:
    print(error.status, error.message, error.details)
    raise