wallet

Create a wallet webhook

Register a webhook URL to receive wallet events (balance updates, transaction confirmed/failed/detected/broadcast, token balance, address created/deactivated). Optional filters by addresses and chains.

POST/api/wallet/non-custodial/webhooks

Authentication

Requires JWT
Note
Include your JWT in the Authorization: Bearer YOUR_TOKEN header (user-facing apps, RBAC). View authentication guide →

Request Body

Webhook URL, events array, optional secret and filters (addresses, chains, projectId).

json
{
  "url": "https://your-app.com/webhooks/wallet",
  "events": [
    "wallet.balance.updated",
    "wallet.transaction.confirmed"
  ],
  "secret": "whsec_abc123xyz789",
  "filters": {
    "addresses": [
      "65a1b2c3d4e5f6789012345a"
    ],
    "chains": [
      "ethereum",
      "bitcoin"
    ]
  },
  "projectId": "685ad30be129932fbb7a1047"
}
{
  "url": "https://your-app.com/webhooks/wallet",
  "events": [
    "wallet.balance.updated",
    "wallet.transaction.confirmed"
  ],
  "secret": "whsec_abc123xyz789",
  "filters": {
    "addresses": [
      "65a1b2c3d4e5f6789012345a"
    ],
    "chains": [
      "ethereum",
      "bitcoin"
    ]
  },
  "projectId": "685ad30be129932fbb7a1047"
}

SDK setup

Create a client and set credentials (JWT and/or API key) before calling the API. Match the authentication type shown above.

import { MudbaseClient } from "mudbase";

const client = new MudbaseClient();
client.setJWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c3JfbW9yZ2FuX2RlIiwiZW1haWwiOiJtb3JnYW4uY2hlbkBub3J0aHdpbmQuZGV2IiwiZXhwIjoxODI1MTI5NjAwfQ.doc_preview_sig");
import { MudbaseClient } from "mudbase";

const client = new MudbaseClient();
client.setJWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c3JfbW9yZ2FuX2RlIiwiZW1haWwiOiJtb3JnYW4uY2hlbkBub3J0aHdpbmQuZGV2IiwiZXhwIjoxODI1MTI5NjAwfQ.doc_preview_sig");

Example request

Call this endpoint using the client from SDK setup. Use View HTTP for a raw cURL example.

const result = await client.wallet.createWebhook({
  url: "https://nervous-statue.org",
  events: "driver parse",
  secret: "Str0ng_Sample_Pass!w0rd",
  filters: "capacitor bypass",
  projectId: "proj_3uwXCWV1WgWl"
});
const result = await client.wallet.createWebhook({
  url: "https://nervous-statue.org",
  events: "driver parse",
  secret: "Str0ng_Sample_Pass!w0rd",
  filters: "capacitor bypass",
  projectId: "proj_3uwXCWV1WgWl"
});

Try It Live

Test this endpoint with your own credentials. Your requests will be sent to the live API.

Use the auth endpoints to obtain a JWT.

No Request Yet

Send a request to see the full inspector

Responses

201Webhook created successfully
json
{
  "success": true,
  "message": "Webhook created successfully",
  "data": {
    "_id": "65a1b2c3d4e5f6789012345c",
    "url": "https://your-app.com/webhooks/wallet",
    "events": [
      "wallet.balance.updated",
      "wallet.transaction.confirmed"
    ],
    "filters": {
      "addresses": [],
      "chains": []
    },
    "isActive": true,
    "stats": {
      "totalDeliveries": 0,
      "successfulDeliveries": 0,
      "failedDeliveries": 0,
      "lastDeliveryAt": null
    },
    "createdAt": "2026-01-22T10:00:00.000Z",
    "updatedAt": "2026-01-22T10:00:00.000Z"
  }
}
{
  "success": true,
  "message": "Webhook created successfully",
  "data": {
    "_id": "65a1b2c3d4e5f6789012345c",
    "url": "https://your-app.com/webhooks/wallet",
    "events": [
      "wallet.balance.updated",
      "wallet.transaction.confirmed"
    ],
    "filters": {
      "addresses": [],
      "chains": []
    },
    "isActive": true,
    "stats": {
      "totalDeliveries": 0,
      "successfulDeliveries": 0,
      "failedDeliveries": 0,
      "lastDeliveryAt": null
    },
    "createdAt": "2026-01-22T10:00:00.000Z",
    "updatedAt": "2026-01-22T10:00:00.000Z"
  }
}
400Bad request or validation error.
401Authentication required or invalid token.
429Rate limit exceeded.

Errors

CodeMeaning
400Bad request or validation error.
401Authentication required or invalid token.
429Rate limit exceeded.
Edit this page on GitHub