My wallets
- curl
- JavaScript
- Python
curl http://127.0.0.1:8787/v1/wallet/wallets \
-H "Authorization: Bearer <participant accessToken>"
const response = await fetch("http://127.0.0.1:8787/v1/wallet/wallets", {
headers: { Authorization: `Bearer ${accessToken}` },
});
const { items } = await response.json();
import requests
response = requests.get(
"http://127.0.0.1:8787/v1/wallet/wallets",
headers={"Authorization": f"Bearer {access_token}"},
)
items = response.json()["items"]
{
"items": [
{
"walletId": "0728a...",
"eventId": "018f26d7-8a7b-7e7d-8c96-4f0b8d0f2b10",
"eventName": "Summer Festival",
"eventSlug": "summer-festival",
"eventCode": "AXY-9898",
"status": "active",
"lastSyncedAt": "2026-08-07T10:00:03.000Z"
}
]
}
This is discovery, not balance
This endpoint lives in wallet-control-api (global) and reads from
global.user_wallet_directory — a fast-read mirror, not the source of
truth. It answers "which events do I already have a wallet in, and what's
each one's eventId", so the app can then call GET /v1/events/{eventId}/wallets/current (in the right region) and get the
real balance. Don't use the status from here to decide whether you can
spend — it's just a snapshot, a few seconds behind whatever just happened
in the region.
Why it can take a moment to show up
When a wallet is activated (see Find an event and activate a
wallet), the region writes
an event to its own queue (outbox) and a background process — which runs
every few seconds, not instantly — sends it to the global directory. If you
call GET /v1/wallet/wallets right at the instant after activation, the wallet
might not be in the list yet. If your app needs to show the wallet
immediately after activating it, use the response from the PUT .../wallets/current call itself instead of relying on this listing right
away.