Skip to main content

Endpoint

POST /exchange

Request Body

ParameterTypeDescription
action*objectSee below
action.type*stringMust be "reportDeposit"
action.txHash*stringHyperLiquid transaction hash (normalized to lowercase), e.g., "0x1234567890abcdef..."
action.userAddress*stringUser’s wallet address who executed the deposit, e.g., "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"

Response

{
  "success": true,
  "txHash": "0x1234567890abcdef..."
}

Response Fields

FieldTypeDescription
successbooleantrue if the report was accepted and emitted into the deposit processing flow
txHashstringNormalized transaction hash

Example Request

curl -X POST https://api.notional.xyz/exchange \
  -H "Content-Type: application/json" \
  -d '{
    "action": {
      "type": "reportDeposit",
      "txHash": "0x1234567890abcdef...",
      "userAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
    }
  }'

Error Responses

{
  "error": "Transaction hash not found on blockchain"
}

Notes

  • Wait for the HyperLiquid ledger entry to exist before reporting. - Only report your own deposits. - The backend verifies the matching HyperLiquid ledger entry, the destination protocol address, and the reporting user before emitting the deposit event. - Auto-verification currently supports deposit ledger entries that resolve to a send delta for the reporting user. - Accepted deposits are processed by the downstream reducer path; deposits above policy limits may still end up segregated. - Spot USDC deposits are auto-swept from spot to perp after verification. - No signature or nonce is required for reportDeposit.