Ponder Callback (Webhook)
Webhook endpoint called by Ponder indexer when blockchain events occur.
X-Admin-Key must match PONDER_KEY environment variable
Request Body:
to- Recipient wallet addressfrom- Sender wallet addresshash- Transaction hashamount- Amount transferred in wei (string)
200 OK
Behavior:
- Looks up all merchant subscriptions for the
toaddress - Formats the amount using
TOKEN_DECIMALSenvironment variable - Sends email notifications to all subscribed email addresses
- Email includes transaction details: amount, from/to addresses, and transaction hash
- Transaction amount (formatted with 2 decimals)
- Sender address
- Recipient address (or wallet name if configured)
- Transaction hash (first 6 characters in subject)
401 Unauthorized- Invalid or missingX-Admin-Key
Ponder Ping (Health Check)
Health check endpoint for Ponder service.
X-Admin-Key must match PONDER_KEY environment variable
Response: 200 OK
Add Merchant Subscription
Subscribe to transaction notifications for a wallet address.
address- Wallet address to monitor (must be owned by authenticated user)email- Email address for notifications (must be verified)
201 Created
Error Responses:
400 Bad Request- Invalid request or email not provided403 Forbidden- Email not verified, wallet not owned, or user not a merchant401 Unauthorized- Not authenticated
Get Merchant Subscriptions
Retrieve all merchant subscriptions for the authenticated user.
200 OK
id- Subscription ID (used for deletion)address- Monitored wallet addresstype- Subscription type (always “merchant” currently)owner- User DIDdata- Base64-encoded email address
Delete Merchant Subscription
Unsubscribe from transaction notifications.
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | Subscription ID to delete |
DELETE /ponder?id=1
Response: 200 OK
Error Responses:
400 Bad Request- Missing or invalid subscription ID403 Forbidden- User does not own this subscription401 Unauthorized- Not authenticated
Get Transaction History
Retrieve paginated transaction history for a wallet address.
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
address | string | - | Yes | Wallet address |
page | integer | 0 | No | Page number |
count | integer | 10 | No | Items per page |
desc | boolean | false | No | Sort descending (newest first) |
GET /transactions?address=0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1&page=0&count=20&desc=true
Response: 200 OK
400 Bad Request- Missing or invalid address
Get Balance at Timestamp
Calculate wallet balance at a specific point in time.
| Parameter | Type | Required | Description |
|---|---|---|---|
address | string | Yes | Wallet address |
timestamp | integer | Yes | Unix timestamp |
GET /transactions/balance?address=0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1×tamp=1709553600
Response: 200 OK
address- Wallet addresstimestamp- Requested Unix timestampbalance- Balance in wei (string) at that timestamp
400 Bad Request- Missing or invalid parameters401 Unauthorized- Not authenticated
Schemas
PonderHookData
PonderSubscription
Transaction
Integration Notes
Ponder Service: Ponder is a separate blockchain indexer service that:- Listens to ERC20 Transfer events on Berachain
- Stores transaction data in the
ponderPostgreSQL database - Triggers webhooks to
POST /ponder/callbackfor subscribed addresses
PONDER_SERVER_BASE_URL- Base URL of the Ponder servicePONDER_KEY- Shared secret for authenticationPONDER_CALLBACK_URL- Public URL of this API’s callback endpointTOKEN_DECIMALS- Token decimals for formatting (e.g., “1000000000000000000” for 18 decimals)