The Wallet Platform API is a RESTful interface to everything a merchant's digital wallet can do: how it looks, what it offers, who it reaches, and what those people can redeem.
Base URL: https://api.wall.et
How this reference is organized
The routes in the left sidebar follow the four stages of the guest lifecycle, which is the same order a real merchant works through:
| Stage | What the routes cover |
|---|---|
| Apply branding | QR code designs, payment designs, the visual identity a guest sees |
| Attract visitors | The content that fills the wallet: products, services, dining, gaming, gallery, videos, news, business cards, short links |
| Engage subscribers | Opt-in, SMS, and the messaging that turns a visitor into a contactable subscriber |
| Motivate customers | Vouchers, gift cards, tickets, store credit, and memberships that bring people back |
Looking for one specific endpoint? The search box (Ctrl-K) is faster than the tree.
Getting started
1. Create a merchant profile. Register at https://wall.et/register. Everything in this API belongs to a merchant, so this comes first.
2. Add an employee account for your integration. Use a separate account rather than a person's login. Requests are then attributable to the integration, and revoking its access later does not lock a human out of the portal.
3. Generate an API key for that account. See Creating an API Key.
4. Check you can reach us. A handful of system reference endpoints need no key, so you can prove connectivity before you debug credentials:
curl https://api.wall.et/system/countries/all5. Make your first authenticated call. Every other request carries your key in the access-token header:
curl https://api.wall.et/v2/dashboard/count/visitors \
-H "access-token: YOUR_API_KEY"A 401 means the key is missing, malformed, or revoked.
Rate limits
Authenticated responses carry your current budget, so you can back off before you are cut off:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests allowed in the current window |
X-RateLimit-Remaining | Requests you have left |
X-RateLimit-Reset | ISO 8601 timestamp when the window resets |
Exceed the limit and you get 429 Too Many Requests with a Retry-After header giving the seconds to wait. Wait that long rather than retrying immediately.
Limits are counted per API key, so separate integrations holding separate keys do not compete for the same budget.
SDKs
If you would rather not hand-roll HTTP, we generate a client for each of four languages from this same specification, so they never drift from the API:
| Language | Package |
|---|---|
| TypeScript / Node | wallet on npm |
| Python | wallet on PyPI |
| PHP | wallet/wallet on Packagist |
| .NET / C# | WalletInc on NuGet |
You can also export a snippet in any language from an endpoint page here, using the language selector at the top right of the code panel. The ellipsis reveals more languages if yours is not shown by default.
Conventions worth knowing before you start
Object IDs are typed. Every id we return is twelve characters: a two-letter prefix identifying the kind of object, followed by a ten-character identifier. The prefix travels with the id, so you can tell what an id refers to without tracking where it came from. Pass ids back to us exactly as you received them.
Validation failures come back as 422, with a fields object naming each field that failed and why. Those messages are written to be shown to a person.
We add, we do not break. New fields and endpoints appear over time, but we do not remove, rename, or retype a field you are already reading. Write your client to ignore fields it does not recognize and it will keep working.
Getting help
Join us for live chat on our Discord channel, or email [email protected]. Tell us the endpoint, the request you sent, and what you expected; it saves a round trip.
Happy building.
