Catalog PyPI
PACKAGE EXPLORERView in registry

achek-sdk

PyPI

Official Python SDK for Achek — WhatsApp OTP, AI chatbots & business messaging for Nigeria

2faachekchatbotnigeriaotpsmsverificationwhatsapp
Versions collected1
Direct dependencies0From release 1.0.2
Last observed20 Oct, 18:12 UTC

README

Version 1.0.2 documentation

achek — Python SDK

Official Python SDK for Achek — WhatsApp OTP, automated alerts, transaction notifications, broadcasts, and support ticket tracking for Nigeria and Africa.

PyPI Python License: MIT

Install

pip install achek-sdk

Quick Start

from achekverify import AchekConnect

client = AchekConnect(api_key="your_api_key")

# Send WhatsApp OTP
result = client.otp.send("+2348012345678")
request_id = result["requestId"]

# Verify the code the user entered
verification = client.otp.verify(request_id, user_code)
if verification["valid"]:
    login_user()  # ✅

Get your API key from the Achek dashboard.


OTP Verification

# Simple send
result = client.otp.send("+2348012345678")
request_id = result["requestId"]

# With custom template (Growth+ plans)
result = client.otp.send(
    "+2348012345678",
    template="Hi {{name}}, your {{company}} code is {{code}}. Valid 10 mins.",
    recipient_name="Emeka",
    company_name="MyApp",
)

# Verify
result = client.otp.verify(request_id, "847293")
# {"valid": True, "message": "OTP verified successfully"}

# Fetch OTP logs
logs = client.otp.logs(limit=20, status="verified")

Transaction Alerts

Send formatted debit/credit/transfer alerts directly to a customer's WhatsApp:

client.alerts.transaction(
    "+2348012345678",
    type="debit",
    amount=15000,
    reference="TXN-20240519-001",
    account_name="Emeka Okafor",
    balance=240000,
    description="Transfer to Kuda",
)

This automatically sends a clean WhatsApp message:

💸 Debit Alert

Amount: ₦15,000.00
Account: Emeka Okafor
Ref: `TXN-20240519-001`
Narration: Transfer to Kuda
Balance: ₦240,000.00

_Powered by Achek_

Custom Alerts

client.alerts.send(
    "+2348012345678",
    "*Your account has been credited with ₦5,000* 🎉",
    category="notification",
)

Broadcasts

Send a single WhatsApp message to up to 1,000 recipients at once:

result = client.broadcasts.send(
    name="Black Friday Promo",
    message="🔥 *50% OFF* today only! Code: *FRIDAY50*",
    recipients=["+2348012345678", "+2349087654321"],  # up to 1000
)

# Check delivery status
status = client.broadcasts.status(result["id"])

Support Ticket Tracking

Create support tickets and keep customers updated on WhatsApp automatically:

# Create a ticket — customer gets a WhatsApp notification
ticket = client.tickets.create(
    "+2348012345678",
    "Payment not reflecting",
    description="Paid ₦5,000 but order not updated",
    priority="high",
    notify_customer=True,
)
ticket_id = ticket["ticketId"]

# Update — customer gets a WhatsApp update
client.tickets.update(
    ticket_id,
    status="in_progress",
    notify_customer=True,
    notification_message="We're investigating — expected resolution: 2 hours.",
)

# Resolve
client.tickets.resolve(ticket_id, "Your issue has been fixed! Check your account.")

# List open tickets
open_tickets = client.tickets.list(status="open")

Error Handling

from achekverify import AchekConnect, AchekConnectError

try:
    client.otp.send("+2348012345678")
except AchekConnectError as e:
    print(e.args[0])     # "No active subscription"
    print(e.status_code) # 402
    print(e.code)        # "SUBSCRIPTION_REQUIRED"

Configuration

client = AchekConnect(
    api_key="your_api_key",
    base_url="https://api.achek.com.ng",  # override if self-hosted
    timeout=15,                            # seconds (default: 15)
)

API Reference

ModuleMethodDescription
otpsend(phone, **kwargs)Send WhatsApp OTP
otpverify(request_id, code)Verify OTP code
otplogs(**kwargs)Fetch OTP delivery logs
alertssend(phone, message, **kwargs)Send custom WhatsApp alert
alertstransaction(phone, **kwargs)Send formatted transaction alert
broadcastssend(name, message, recipients)Send broadcast to up to 1,000 numbers
broadcastslist()List recent broadcasts
broadcastsstatus(broadcast_id)Get broadcast delivery status
ticketscreate(phone, subject, **kwargs)Create support ticket
ticketslist(**kwargs)List tickets
ticketsget(ticket_id)Get ticket by ID
ticketsupdate(ticket_id, **kwargs)Update status/priority
ticketsresolve(ticket_id, message?)Resolve and notify customer

License

MIT — see LICENSE

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
1.0.222 May 20260

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
calebdevx/achek-python

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:12 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:03cbac48e556795eb96df6ba60bf0542693342121bf89f6b1f805307f431ddb8