Skip to main content

Inventory Submission

Load users' current holdings into SWAPS. Server-side bulk inventory uses a secret key and is intended for partner backends.

Bulk inventory is graph bootstrap. It pre-seeds asset IDs, ownership, names, images, collections, and optional seed values so discovery can start quickly. Those seed values become stale and are never the signing-time fee authority.

For Solana fee-bearing swaps, configure a tenant valuation strategy that points to the partner-aligned live value source. Examples: Collector Crypt can use a verified on-chain metadata trait such as Insured Value; Phygitals-style platforms should use a partner API. SWAPS refreshes displayed card values from that source and refuses accept before wallet signature when the current value cannot be verified.

curl -X POST https://www.swapsapi.com/api/v2/partners/inventory/bulk \
-H "Authorization: Bearer <API_KEY>" -H "Content-Type: application/json" \
-d '{"mode":"merge","users":[{"walletAddress":"0x1111111111111111111111111111111111111111","items":[{"id":"0x3333333333333333333333333333333333333333:1","name":"Charizard PSA 10","collection":"Pokemon Base Set","floorPrice":500,"currency":"USD"}]}]}'

Widget inventory deltas use POST /api/v2/inventory/update with publishable-key HMAC headers and are bound to the verified widget user.

Example response:

{
"success": true,
"usersProcessed": 1,
"nftsIndexed": 1,
"inventoryState": {
"wallets": 1,
"opportunities": 0
},
"mode": "merge",
"message": "Merged 1 users with their inventory. Existing inventory was left untouched."
}

Widget update response:

{
"success": true,
"added": 1,
"removed": 0,
"rejected": 0,
"message": "Inventory updated."
}