Pular para o conteúdo principal
Todas as funções de envio ficam em client.messages. No SDK, o id da instância vira instance_id e o header X-Instance-Token vira instance_token.
base = {
    "instance_id": "VZ...",
    "instance_token": "instance-token",
    "phone": "5511999999999",
}

Campos comuns

Quase todos os envios aceitam os campos abaixo:
CampoTipoObrigatórioDescrição
instance_idstringSimID da instância VZaps.
instance_tokenstringSimToken da instância.
phonestringSimTelefone destino em formato internacional, somente dígitos.
idstringNãoIdentificador opcional da mensagem no pedido.
delaynumberNãoAtraso de envio, quando suportado pela API.
mentioned_idslist[str]NãoIDs citados no WhatsApp.
reply_to_message_idstringNãoID da mensagem do WhatsApp a ser respondida ou citada.
Os dicts de request aceitam campos adicionais do contrato público além dos listados aqui. Use os campos documentados nesta página quando precisar de recursos avançados como id, delay ou reply_to_message_id.

Texto

Função: client.messages.send_text() Payload:
CampoTipoObrigatório
phonestringSim
messagestringSim
client.messages.send_text(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    message="Olá, sua instância está conectada.",
    id="MSG-TXT-001",
    reply_to_message_id="3EB020510113BAA6561C",
)
Retorno: envelope { code, success, data.message_id } — mensagem aceita/enfileirada.

Imagem

Função: client.messages.send_image() Payload:
CampoTipoObrigatório
phonestringSim
imagestringSim
captionstringNão
image aceita URL pública https://... ou data URL em base64 (data:image/<mime>;base64,<data>).
client.messages.send_image(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    image="https://cdn.example.com/foto.jpg",
    caption="Legenda opcional",
)
Retorno: envelope { code, success, data.message_id } — mensagem aceita/enfileirada.

Áudio

Função: client.messages.send_audio() Payload:
CampoTipoObrigatório
phonestringSim
audiostringSim
pttbooleanNão
audio aceita URL pública ou data URL em base64 (data:audio/<mime>;base64,...). Use ptt=True para enviar nota de voz, se suportado no fluxo da conta.
client.messages.send_audio(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    audio="https://cdn.example.com/audio.mp3",
    ptt=False,
)

Documento

Função: client.messages.send_document() Payload:
CampoTipoObrigatório
phonestringSim
documentstringSim
file_namestringSim
captionstringNão
client.messages.send_document(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    document="https://cdn.example.com/contrato.pdf",
    file_name="contrato.pdf",
    caption="Aqui está o contrato",
)
Retorno: envelope { code, success, data.message_id } — mensagem aceita/enfileirada.

Vídeo

Função: client.messages.send_video() Payload:
CampoTipoObrigatório
phonestringSim
videostringSim
captionstringNão
jpeg_thumbnailstringNão
client.messages.send_video(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    video="https://cdn.example.com/video.mp4",
    caption="Vídeo de demonstração",
)

Sticker

Função: client.messages.send_sticker() Payload:
CampoTipoObrigatório
phonestringSim
stickerstringSim
png_thumbnailstringNão
client.messages.send_sticker(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    sticker="https://cdn.example.com/sticker.webp",
)
Retorno: envelope { code, success, data.message_id } — mensagem aceita/enfileirada.

GIF

Função: client.messages.send_gif() Payload:
CampoTipoObrigatório
phonestringSim
gifstringSim
captionstringNão
client.messages.send_gif(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    gif="https://media.giphy.com/media/exemplo/giphy.gif",
    caption="GIF animado",
)
Retorno: envelope { code, success, data.message_id } — mensagem aceita/enfileirada.

Localização

Função: client.messages.send_location() Payload:
CampoTipoObrigatório
phonestringSim
latitudenumberSim
longitudenumberSim
namestringNão
addressstringNão
client.messages.send_location(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    latitude=-23.55052,
    longitude=-46.633308,
    name="São Paulo",
    address="São Paulo, SP",
)
Retorno: envelope { code, success, data.message_id } — mensagem aceita/enfileirada.

Contato

Função: client.messages.send_contact() Payload:
CampoTipoObrigatório
phonestringSim
contact_namestringSim
contact_phonestringSim
client.messages.send_contact(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    contact_name="Maria Silva",
    contact_phone="5511888888888",
)
Retorno: envelope { code, success, data.message_id } — mensagem aceita/enfileirada.

Botões

Função: client.messages.send_buttons() Payload:
CampoTipoObrigatório
phonestringSim
messagestringSim
buttonslist[dict]Sim
footerstringNão
Cada botão: {"id": "...", "text": "..."}.
client.messages.send_buttons(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    message="Escolha uma opção",
    footer="VZaps",
    buttons=[
        {"id": "vendas", "text": "Vendas"},
        {"id": "suporte", "text": "Suporte"},
    ],
)
Retorno: envelope { code, success, data.message_id } — mensagem aceita/enfileirada.

Lista

Função: client.messages.send_list() Payload:
CampoTipoObrigatório
phonestringSim
titlestringSim
descriptionstringSim
button_textstringSim
sectionslist[dict]Sim
footerstringNão
client.messages.send_list(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    title="Menu principal",
    description="Escolha uma opção",
    button_text="Abrir menu",
    sections=[
        {
            "title": "Departamentos",
            "rows": [
                {"id": "vendas", "title": "Vendas", "description": "Falar com vendas"},
                {"id": "suporte", "title": "Suporte", "description": "Falar com suporte"},
            ],
        },
    ],
)
Retorno: envelope { code, success, data.message_id } — mensagem aceita/enfileirada. Função: client.messages.send_link() Payload:
CampoTipoObrigatório
phonestringSim
messagestringSim
link_urlstringSim
titlestringSim
link_descriptionstringSim
jpeg_thumbnailstringNão
client.messages.send_link(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    message="Confira este link",
    link_url="https://vzaps.com",
    title="VZaps",
    link_description="API WhatsApp para integrações",
)

Enquete

Função: client.messages.send_poll() Payload:
CampoTipoObrigatório
phonestringSim
namestringSim
optionslist[str]Sim
selectable_options_countnumberNão
hide_participant_namesbooleanNão
end_timestringNão
allow_add_optionbooleanNão
client.messages.send_poll(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    name="Qual canal você prefere?",
    options=["WhatsApp", "E-mail", "Telefone"],
    selectable_options_count=1,
)
Retorno: envelope { code, success, data.message_id } — mensagem aceita/enfileirada.

Votar em enquete

Função: client.messages.poll_vote()
client.messages.poll_vote(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    message_id="3EB020510113BAA6561C",
    selected_options=["WhatsApp"],
)

Reagir e remover reação

Funções:
  • client.messages.react()
  • client.messages.remove_reaction()
client.messages.react(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    message_id="3EB020510113BAA6561C",
    reaction="👍",
)

client.messages.remove_reaction(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    message_id="3EB020510113BAA6561C",
)

Presença e leitura

Funções:
  • client.messages.presence()
  • client.messages.mark_read()
client.messages.presence(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    state="composing",
)

client.messages.mark_read(
    instance_id="VZ...",
    instance_token="instance-token",
    id=["3EB020510113BAA6561C"],
    chat="5511999999999@s.whatsapp.net",
)
Retorno: envelope { code, success, data.details }.

Editar e deletar mensagem

Funções:
  • client.messages.edit()
  • client.messages.delete()
client.messages.edit(
    instance_id="VZ...",
    instance_token="instance-token",
    message_id="3EB020510113BAA6561C",
    message="Texto editado",
)

client.messages.delete(
    instance_id="VZ...",
    instance_token="instance-token",
    message_id="3EB020510113BAA6561C",
)
Retorno: envelope { code, success, data.details }.

Download de mídia

Funções:
  • download_image()
  • download_video()
  • download_audio()
  • download_document()
media = client.messages.download_image(
    instance_id="VZ...",
    instance_token="instance-token",
)

print(media)
Retorno: envelope { code, success, data } com data.mimetype e data.data (base64 ou data URL).

Resposta padrão

Os métodos de envio retornam um envelope da API indicando que a mensagem foi aceita ou enfileirada.
result = client.messages.send_text(
    instance_id="VZ...",
    instance_token="instance-token",
    phone="5511999999999",
    message="Olá",
)

print(result)
Consulte a referência da API para os schemas de resposta mais recentes.