Skip to main content
Hyperliquid
Merges an equal number of Yes and No shares for one Hyperliquid-routed outcome into USDC.

Endpoint

/exchange/userOutcome is not a separate URL. userOutcome is the action type sent to the shared /exchange endpoint.

Request Body

action

action.mergeOutcome

Use the numeric outcomeId, not a side assetId, hlEncoding, or question ID. When amount is null, Notional computes:
Available shares are total - hold. If either side has no available shares, the request is rejected. Explicit amounts must be positive integer-valued strings; fractional sets are not supported.

Signing

Sign the complete action and nonce using Notional’s NotionalExchange domain:
Submit signature.r, signature.s, and signature.v in the request. The user wallet or an approved API wallet may sign.
Do not sign this client request with Hyperliquid’s native Exchange domain. Notional uses the distinct NotionalExchange domain so the signature cannot be replayed directly against Hyperliquid.

Response

This response means Notional accepted and recorded the request. It does not mean Hyperliquid has completed the merge.

Progress and Balance Effects

  1. OutcomeMergeRequested reserves amount on both outcome sides.
  2. Notional submits the merge to Hyperliquid asynchronously.
  3. OutcomeMergeExecuted removes the reserved Yes and No shares and credits the same amount in USDC.
  4. OutcomeMergeFailed releases both reservations without crediting USDC.
Subscribe to userTransactions to track these transaction types. After an executed or failed event, refresh outcomeBalances and assets. After an uncertain response, retry only by resubmitting the identical signed body and nonce. Do not change the amount or nonce while reusing the old signature.

Validation Rules

  • Use an outcomeId returned by outcomeMarkets; both sides must be quoted in USDC.
  • The user must have enough unheld shares on both sides.
  • The amount must be a positive whole number of outcome sets.
  • Frozen accounts and accounts in active liquidation cannot submit the action.
  • Only mergeOutcome is currently enabled under userOutcome.
splitOutcome, mergeQuestion, and negateOutcome are not public actions. Requests containing those variants currently return HTTP 400. See Outcome Markets for outcome ids, Outcome Balances for available shares, and Signing, Nonces, and API Wallets for signature details.