After you load offer details, you can create a user participation and track its status over time. This page covers the SDK surface (listing, fetching, creating). For the end-to-end UX flow - wallet connect, on-chain approval, then createParticipation - see Build the invest flow.
Prerequisites
- Completed OAuth with a working
CoinListProvider
- An offer id and offer option id from Display offer details
- A valid funding asset id and wallet address for the selected offer
- The hash of the ERC-20 approval transaction for the funding amount (see Build the invest flow)
Recommended: useParticipations hook + CoinListClient
For the reactive case, use the useParticipations(offerId?) hook - it loads all participations for the authenticated user with a LOADING / CONTENT / ERROR state machine, optionally scoped to one offer. For imperative reads or writes, drop down to CoinListClient:
coinlist.tokenSale.fetchParticipations(offerId?) returns all pages of participations for the authenticated user
coinlist.tokenSale.createParticipation(params) creates a new participation
createParticipation accepts camelCase keys in the SDK (offerId, offerOptionId, walletAddress, assetId). The SDK maps these to the API request fields defined in OpenAPI (offer_id, offer_option_id, wallet_address, asset_id).
REST parity: Participations endpoints
Use REST directly when you are not using the SDK client.
GET /v1/participations lists participations for the authenticated partner and user
POST /v1/participations creates a participation
Example response shape:
See the API reference for full schema and status values.