Python SDK
Official Python SDK for APIMW
Python SDK
Official Python SDK for APIMW API integration.
Requirements
- Python 3.9 or higher
- pip
Installation
pip install apimw
Quick Start
from apimw import APIMW
client = APIMW(
api_key='your_api_key',
api_secret='your_api_secret'
)
# Send a WhatsApp message
response = client.whatsapp.send_message(
to='+1234567890',
message='Hello from Python!'
)
print(response.message_id)
Configuration
import os
from apimw import APIMW
client = APIMW(
api_key=os.environ['APIMW_API_KEY'],
api_secret=os.environ['APIMW_API_SECRET'],
timeout=30,
max_retries=3
)
Async Support
import asyncio
from apimw import AsyncAPIMW
async def main():
client = AsyncAPIMW(
api_key='your_api_key',
api_secret='your_api_secret'
)
response = await client.whatsapp.send_message(
to='+1234567890',
message='Hello async!'
)
print(response.message_id)
asyncio.run(main())
Sending Messages
Text Message
response = client.whatsapp.send_message(
to='+1234567890',
message='Hello World!'
)
Template Message
response = client.whatsapp.send_template(
to='+1234567890',
template='order_confirmation',
language='en',
components=[
{
'type': 'body',
'parameters': [
{'type': 'text', 'text': 'John'},
{'type': 'text', 'text': 'ORD-123'}
]
}
]
)
Webhooks
Flask Handler
from flask import Flask, request
from apimw.webhook import WebhookHandler
app = Flask(__name__)
handler = WebhookHandler(secret='your_webhook_secret')
@app.route('/webhook', methods=['POST'])
def webhook():
signature = request.headers.get('X-APIMW-Signature', '')
if not handler.verify(request.data, signature):
return 'Invalid signature', 401
event = handler.parse(request.data)
if event.type == 'message.received':
print(f"Message from {event.data['from']}: {event.data['text']}")
return 'OK', 200
FastAPI Handler
from fastapi import FastAPI, Request, HTTPException
from apimw.webhook import WebhookHandler
app = FastAPI()
handler = WebhookHandler(secret='your_webhook_secret')
@app.post('/webhook')
async def webhook(request: Request):
body = await request.body()
signature = request.headers.get('X-APIMW-Signature', '')
if not handler.verify(body, signature):
raise HTTPException(status_code=401, detail='Invalid signature')
event = handler.parse(body)
# Process event...
return {'status': 'ok'}
Error Handling
from apimw.exceptions import ApiError, RateLimitError
try:
response = client.whatsapp.send_message(...)
except RateLimitError as e:
time.sleep(e.retry_after)
# Retry...
except ApiError as e:
print(f"API Error: {e.message} ({e.code})")