Skip to main content

WazzAPI Python SDK

Official Python SDK for WazzAPI.

Use it to send messages, inspect WhatsApp devices, manage contacts and templates, and verify incoming webhooks with a simple typed client.

What you can do with this SDK

  • send direct WhatsApp messages
  • list and inspect WhatsApp devices
  • list, create, update, and delete contacts
  • manage message templates and preview rendered content
  • verify and parse incoming WazzAPI webhooks
  • work with typed request and response models

Requirements

  • Python 3.10+
  • a WazzAPI account
  • a WazzAPI API key

Install

From PyPI:

pip install wazzapi

With uv:

uv add wazzapi

Need a WazzAPI account first?

Sign up at https://app.wazzapi.com using your Google organization account. On first sign-in, WazzAPI creates a new workspace for you automatically.

Configuration

For most integrations, you only need your API key:

  • WAZZAPI_API_KEY

If you plan to receive webhooks, also configure:

  • WAZZAPI_WEBHOOK_SECRET

The SDK uses https://api.wazzapi.com by default, so you do not need to set a base URL.

Quick start

Send a message

from wazzapi import SendMessageRequest, WazzapiClient

with WazzapiClient(api_key="your-api-key") as client:
    response = client.messages.send(
        SendMessageRequest(
            phone_number="+6281234567890",
            whatsapp_account_id="your-whatsapp-account-id",
            content="Hello from WazzAPI!",
        )
    )

print(response.model_dump())

Error handling

When the API returns a non-success response, the SDK raises WazzapiAPIError.

from wazzapi import WazzapiAPIError, WazzapiClient

try:
    with WazzapiClient(api_key="your-api-key") as client:
        client.messages.get("missing-message-id")
except WazzapiAPIError as exc:
    print(exc.status_code)
    print(exc.message)

More usage examples

List contacts

from wazzapi import WazzapiClient

with WazzapiClient(api_key="your-api-key") as client:
    response = client.contacts.list(limit=20, search="alice")

for contact in response.contacts:
    print(contact.model_dump())

### List devices

```python
from wazzapi import WazzapiClient

with WazzapiClient(api_key="your-api-key") as client:
    response = client.devices.list(limit=20, status="connected")

for device in response.devices:
    print(device.name, device.session_name, device.status)

### Create a template

```python
from wazzapi import TemplateCreateRequest, WazzapiClient

with WazzapiClient(api_key="your-api-key") as client:
    template = client.templates.create(
        TemplateCreateRequest(
            name="welcome-message",
            category="marketing",
            content="Hi {{name}}, welcome to WazzAPI!",
        )
    )

print(template.model_dump())

Preview a template

from wazzapi import TemplatePreviewRequest, WazzapiClient

with WazzapiClient(api_key="your-api-key") as client:
    preview = client.templates.preview(
        TemplatePreviewRequest(
            content="Hi {{name}}, your code is {{code}}.",
            custom_variables={"name": "Alice", "code": "WZ-1234"},
        )
    )

print(preview.model_dump())

Webhook verification

Use WebhookHandler to verify the raw request body against X-Wazzapi-Signature before parsing JSON.

from wazzapi import WebhookHandler

handler = WebhookHandler("your-webhook-secret")
webhook = handler.verify_and_parse(raw_body, request.headers)

print(webhook.event_type)
print(webhook.data.model_dump())

WazzAPI webhook headers:

  • X-Wazzapi-Signature
  • X-Wazzapi-Event
  • X-Wazzapi-Event-ID

Supported webhook event families:

  • message events: message.received, message.sent, message.delivered, message.read, message.failed
  • device events: device.connected, device.disconnected

Examples

Ready-to-run examples live in examples/:

  • examples/list_devices.py
  • examples/list_contacts.py
  • examples/send_message.py
  • examples/create_template.py
  • examples/preview_template.py
  • examples/verify_webhook.py

Run them with:

uv run python examples/list_contacts.py
uv run python examples/list_devices.py
uv run python examples/send_message.py
uv run python examples/create_template.py
uv run python examples/preview_template.py
uv run python examples/verify_webhook.py

Release automation

This repository includes a GitHub Actions workflow that publishes to PyPI automatically when a tag matching v* is pushed.

Metadata

Release files for wazzapi 0.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wazzapi 0.5.2
File Size Uploaded
wazzapi-0.5.2.tar.gz 21.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wazzapi 0.5.2
File Interpreter ABI Platform
wazzapi-0.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 45.4 kB

Release files / wazzapi-0.5.2.tar.gz

Download URL wazzapi-0.5.2.tar.gz
Size 21.2 kB
Tags Source
SHA-256 checksum
How to use checksums
0662a9aa29e0a6a27fb32909d297dfbe2e752a171e1d784a5ee5ce456634a2ff
BLAKE2b-256 checksum
How to use checksums
3a60f3a01f2e46ac44b78bedcff548e51dccfcd4885e274970c3b67bcfafe5cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.9.5

Release files / wazzapi-0.5.2-py3-none-any.whl

Download URL wazzapi-0.5.2-py3-none-any.whl
Size 24.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
da3eb50d79be0b403d2b66a8452d006244b8e8e0065dc7b20de93eab72df6788
BLAKE2b-256 checksum
How to use checksums
e068bd6a5cd8c702ac25dfd6569525b2a7ec0ea9f47f48a82435522b6e3877b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.9.5

Release history Release notifications | RSS feed

0.6.0

2 release files

This release

0.5.2 This release

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page