Sandbox Evaluation
Use a sandbox tenant to evaluate SWAPS before production launch.
Setup
- Create a tenant through the hosted SWAPS signup. Choose Free for a sandbox or Launch for partner-scale limits.
- Keep the returned server key on your backend.
- Use the publishable key and widget HMAC secret for browser flows.
- Use test wallets and testnet assets where possible.
The public signup API requires a browser-generated, single-use Cloudflare Turnstile token. Use GET /api/public/forms/config plus the signup action if you are implementing your own browser signup form; do not put a placeholder token in a script or server-to-server request.
Minimal Evaluation Dataset
Create at least two wallets with overlapping inventory and wants:
- Wallet A owns card 1 and wants card 2.
- Wallet B owns card 2 and wants card 1.
- Optional: add Wallet C to validate coordinated opportunities across more than two participants.
Bulk load the inventory:
curl -X POST https://www.swapsapi.com/api/v2/partners/inventory/bulk \
-H "Authorization: Bearer <SK_KEY>" \
-H "Content-Type: application/json" \
-d '{"mode":"merge","users":[{"walletAddress":"0x1111111111111111111111111111111111111111","items":[{"id":"0x3333333333333333333333333333333333333333:1","name":"Charizard PSA 10","collection":"Pokemon Base Set"}]},{"walletAddress":"0x2222222222222222222222222222222222222222","items":[{"id":"0x3333333333333333333333333333333333333333:5","name":"Mew Holo","collection":"Pokemon Promo"}]}]}'
Import wants:
curl -X POST https://www.swapsapi.com/api/v2/partners/wants/bulk \
-H "Authorization: Bearer <SK_KEY>" \
-H "Content-Type: application/json" \
-d '{"users":[{"walletAddress":"0x1111111111111111111111111111111111111111","wantedNftIds":["0x3333333333333333333333333333333333333333:5"]},{"walletAddress":"0x2222222222222222222222222222222222222222","wantedNftIds":["0x3333333333333333333333333333333333333333:1"]}]}'
Evaluation Checks
GET /api/v2/partners/readinessshould show indexed wallets, indexed NFTs, and any available opportunities.GET /api/v2/swaps/{walletAddress}should return user-facing give/get swaps.GET /api/v2/explore/{walletAddress}should return availability-checked For You sections.POST /api/v2/swaps/{swapId}/acceptshould prepare a wallet transaction.POST /api/v2/blockchain/trades/broadcastshould record the broadcast hash after the wallet sends it.- Webhooks should arrive with signed, sanitized payloads.