Skip to main content

waservix

WAservix WhatsApp API Gateway - official Python client: send WhatsApp messages from your own number. By Tekservix.

Python client for the WAservix WhatsApp API Gateway.

WAservix links your own WhatsApp number by QR code (the same way WhatsApp Web does) and gives you a REST API to send text, images, video, audio, documents, locations, polls and more, with webhooks for incoming messages and status updates.

  • Zero dependencies (standard library only), Python 3.8+
  • Works in Django, Flask, FastAPI, scripts and cron jobs
  • Webhook check built in

Install

pip install waservix

Quick start

Copy your device's API key from the WAservix dashboard (Devices -> API key) and keep it on your server.

import os
from waservix import WAservix

wa = WAservix(api_key=os.environ["WASERVIX_KEY"])

result = wa.send_text("+15551234567", "Hello Aline, your order is ready")
print(result["msgId"], result["status"])  # 58213 in_progress

Sending

Messages are queued and sent one at a time per number, so each call returns right away with status: "in_progress" and a msgId.

# Image with caption
wa.send_image("+15551234567", "https://example.com/product.jpg", caption="Back in stock")

# Document
wa.send_document("+15551234567", "https://example.com/inv-1042.pdf",
                 file_name="Invoice-1042.pdf", caption="Your invoice")

# Anything the API supports, including groups (JID ending in @g.us)
wa.send_message("120363040000000000@g.us", text="Team meeting at 3pm")
wa.send_message("+15551234567", location={"latitude": -1.9441, "longitude": 30.0619, "name": "Our shop"})

Status, contacts and groups

info = wa.get_message_info(58213)      # queued, sent, delivered, read, played or failed
check = wa.on_whatsapp("+15551234567")  # {"exists": True, "jid": "..."}
conn = wa.get_status()                  # {"status": "connected"}

wa.edit_message(58213, "Corrected text")  # own text messages, about 15 minutes
groups = wa.list_groups()

Anything else in the API reference is one call away:

wa.request("POST", "/messages/read", {"msgId": "3EB0X123456789"})

Webhooks

Set a webhook URL and events for the number in the dashboard. Each request carries X-Webhook-Signature, which equals the device's webhook secret. Flask example:

import os
from flask import Flask, request, abort
from waservix import verify_webhook

app = Flask(__name__)

@app.post("/wa/webhook")
def wa_webhook():
    if not verify_webhook(request.headers.get("X-Webhook-Signature"), os.environ["WASERVIX_WEBHOOK_SECRET"]):
        abort(401)
    payload = request.get_json()
    if payload["event"] == "messages.received":
        m = payload["data"]["messages"]
        print(m["key"]["cleanedSenderPn"], m["messageBody"])
    return "", 200  # acknowledge fast; queue slow work

Errors

Failed calls raise WAservixError with status, message, field errors and, on 429, retry_after in seconds. A 503 means the device is reconnecting: retry shortly.

Never ship the key inside a browser or mobile app: anyone could read it. Call the API from your server.

Migrating from WaSender

WAservix accepts the same /send-message body and webhook fields as WaSender, so most integrations switch by changing the base URL and key. See the compatibility notes.

Use it responsibly

WAservix is not Meta's official WhatsApp Business Platform. There's no business verification and no per-conversation fee, but WhatsApp's spam rules apply to your number directly. Message people who expect to hear from you, warm up new numbers slowly and keep the built-in account protection on.

More from Tekservix

  • SMS Gora SMS Gateway: send SMS through your own Android phones (pip install smsgora)
  • AI Sales Agent: answers customers on WhatsApp and SMS using your website's content
  • Website to App: turn your website into Android and iOS apps
  • Also on npm: npm install waservix

License

MIT

Metadata

Release files for waservix 1.0.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 waservix 1.0.2
File Size Uploaded Provenance Actions
waservix-1.0.2.tar.gz 7.3 kB With provenance Details for waservix-1.0.2.tar.gz

Built distribution (wheel)

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

Total release size: 13.9 kB

Release files / waservix-1.0.2.tar.gz

Download URL waservix-1.0.2.tar.gz
Size 7.3 kB
Tags Source
SHA-256 checksum
How to use checksums
8134f246c204488f603ae45ea924078fb3007fef9f7c361ccabd0e1bf0872672
BLAKE2b-256 checksum
How to use checksums
7f9a58fae38bdada5c251005edf43b8f3b7bef8a63e114291fd3e447f9b6103d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.

Transparency log

Release files / waservix-1.0.2-py3-none-any.whl

Download URL waservix-1.0.2-py3-none-any.whl
Size 6.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7b7b0fc8636e35c8fa0dc4bfab72b8044761a1547cd13943be81342f990568ec
BLAKE2b-256 checksum
How to use checksums
fd0777f4cd3cb84c222e3e70fabb6034dbc7ae338d4acc22559a455a5b3e699e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.

Transparency log

Security for waservix 1.0.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for waservix-1.0.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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