PMWallets
中文

Quickstart

From signing in to your first live trade.

On the website

  1. Sign in with Google or GitHub.
  2. Find a trader on the board. Sort and filter by what matters to you.
  3. Unlock the address. Pay for one, or use a plan.
  4. Subscribe, then watch the trades arrive in My feed.

From your code

Create a key on the API keys page, then call the API:

shell
# HTTP
curl https://api.pmwallets.com/v1/account/fills?limit=100 -H "Authorization: Bearer $PMW_KEY"

# WebSocket — the handshake cannot set Authorization, so the key goes in its own header
const ws = new WebSocket("wss://api.pmwallets.com/v1/ws", { headers: { "x-api-key": process.env.PMW_KEY } });

Query the board:

shell
# the board itself: who is making money, and on what. No key needed for the
# free sample; any key (a signed-in account) raises the caps.
curl -s "https://api.pmwallets.com/v1/leaderboard?sort=realizedPnl&dir=desc&limit=50" \
  -H "Authorization: Bearer $PMW_KEY"

# ...and the same endpoint filtered. Every filter is a floor or an exact match
# (bands: any of the listed unlock-price bands, 0 = free … 5); they combine with
# AND, and nothing here changes what a row CONTAINS.
curl -s "https://api.pmwallets.com/v1/leaderboard?\
minPnl=5000&\
minWinLo=0.55&\
minEligible=30&\
style=maker&\
category=sports&\
status=active&\
maxWallets=1&\
bands=0,1,2&\
sort=winLo&dir=desc&limit=50" -H "Authorization: Bearer $PMW_KEY"

Subscribe to an entity you have unlocked:

shell
# the handle the board shows, or the full 0x address if you already hold it — a masked one is a 400.
# The address must be unlocked first (POST /v1/account/reveals).
ENTITY=7KQ2MF9X4B1C

curl -X POST https://api.pmwallets.com/v1/account/subscriptions \
  -H "Authorization: Bearer $PMW_KEY" -H 'content-type: application/json' \
  -d "{\"entityId\":\"$ENTITY\",\"channels\":[\"ws\",\"webhook\"]}"

# 402 address_not_unlocked if you have not unlocked its address
# 402 if the balance will not cover the first hour; body carries price and balance
# 403 past the daily distinct-entity allowance (subscribing spends one unit, as unlocking does)
# 409 if the entity has had no fill in 7 days — resend with "acceptInactive": true

Then receive its fills over a WebSocket or a webhook.

Reconnects, missed frames, de-duplication and paging are handled for you.
Node.jsGitHub · npm
npm install pmwallets
PythonGitHub · PyPI
pip install pmwallets