📡 Wallet Watchdog API

Use our REST API to manage wallets, access your plan, and receive webhook alerts.


🔐 Authentication

Use your token to authenticate all requests. Include it in the Authorization header:

Authorization: Token <your_token>

🔑 Get Token

POST /api/login/

Body:

{
  "username": "you@example.com",
  "password": "yourpassword"
}

Response:

{
  "token": "abc123..."
}

📥 Using Your Token

Once you receive a token, include it in the Authorization header for all authenticated API calls:

Authorization: Token abc123yourtokenvalue

Example: Get user info

GET /api/me/
Authorization: Token abc123yourtokenvalue

Example: Add a wallet

POST /api/wallets/
Authorization: Token abc123yourtokenvalue
Content-Type: application/json

{
  "address": "0xabc...",
  "chain": "eth",
  "notify_url": "https://yourwebhook.site"
}

🔄 Regenerate Token

POST /api/token/refresh/

Description: Invalidates your current token and returns a new one. Requires login via session (not token).

Headers: CSRF token and session cookie

Response:

{
  "token": "new_generated_token_here"
}

📬 Endpoints


📤 Webhook Format

When a balance change is detected, a signed POST is sent to your notify_url:

{
  "wallet": "0x123...",
  "chain": "eth",
  "old_balance": "1000000000000000000",
  "new_balance": "2000000000000000000",
  "timestamp": "2025-07-28T12:34:56Z",
  "polls_remaining_today": 1,
  "next_poll_available_at": "2025-07-30T19:38:17.018232+00:00",
  "nickname": "yourwalletnickname"
}

📤 Webhook Format ERC20 token

When a balance change is detected for a token in the related wallet, a signed POST is sent to your notify_url:

{
  "address": "0x5bdf85216ec1e38D6458C870992A69e38e03F7Ef",
  "chain": "eth",
  "old_balance_wei": "45703486876840436093818734800",
  "new_balance_wei": "45393552872051273603818734800",
  "decimals": 18,
  "timestamp": "2025-09-16T11:30:28.581148+00:00",
  "polls_remaining_today": "79",
  "next_poll_available_at": "2025-09-16T11:59:28.581157+00:00",
  "body": "Token balance change: SHIB",
  "nickname": "test tokenfunc",
  "symbol": "SHIB"
}

The signature is in the X-Signature header (HMAC SHA256).