Skip to main content
The sandbox is un-metered and never billed, so you can exercise the entire VIP loop against it as many times as you like before you go live. This page gives you a one-command smoke test and the equivalent step-by-step curl calls.

One command

Grab a sandbox Org-API-Key from the developer portal and run the committed smoke script from the monorepo root:
It walks the full loop and exits non-zero on the first failed step:
  1. POST /v1/auth/exchange - mint a member token for a VIP
  2. POST /v1/wallet/credit - fund the VIP with points (server-side)
  3. GET /v1/offers - browse the seeded catalog
  4. POST /v1/redemptions - redeem a points-priced experience
  5. GET /v1/wallet/transactions - read the wallet ledger
  6. GET /v1/conversations - list the member’s concierge conversations
Override EXPYS_BASE_URL or EXPYS_EXTERNAL_USER_ID if you need to.

Step by step

1

Exchange a member token

Your backend presents the Org-API-Key and an externalUserID; the app never holds the key.
2

Fund the VIP

A points-priced redemption is paid from the VIP’s wallet, so credit some points first (a server-side, machine-only call).
3

Browse, redeem, and read back

With the member token, browse the catalog, redeem the first points-priced experience, then read the wallet and conversations.

Concierge replies in the sandbox

You can test the concierge loop end to end without anyone on our side being paged. A message sent into a sandbox conversation is never forwarded to our Ops team; instead a sandbox concierge bot replies automatically, and that reply streams back to you over GET /v1/conversations/{id}/stream exactly like a human concierge message. See Conversations for the streaming details.
None of this touches billing or pages a human - the sandbox is free and isolated. When you go live, the same calls run against your own catalog and a real concierge. See Going live.