> ## Documentation Index
> Fetch the complete documentation index at: https://docs.exponent.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Wallet trading activity

> Retrieve wallet activity with grouped PT and YT executions.

export const ApiResponse = ({children, errors = {}}) => {
  const [status, setStatus] = useState("200");
  const statuses = ["200", ...Object.keys(errors)];
  return <section className="api-response" aria-label="Response">
      <div className="api-response-header not-prose">
        <h2>Response</h2>
        <div className="api-response-format">
          {statuses.length > 1 ? <select aria-label="Response status" value={status} onChange={event => setStatus(event.target.value)}>
              {statuses.map(code => <option key={code} value={code}>{code}</option>)}
            </select> : <span>200</span>}
          <span className="api-response-mime">application/json</span>
        </div>
      </div>
      <div hidden={status !== "200"}>{children}</div>
      {status !== "200" && <div aria-live="polite">
          {Object.entries(errors[status]).map(([name, value]) => <ResponseField key={name} name={name} type={value === null ? "null" : Array.isArray(value) ? "array" : typeof value}>
              {name === "error" ? "Error message describing why the request failed." : "Additional error details."}
            </ResponseField>)}
        </div>}
    </section>;
};

## Path parameters

<ParamField path="userAddress" type="string" required>
  User wallet address.
</ParamField>

## Query parameters

<ParamField query="vault" type="string">
  Filter to a vault.
</ParamField>

<ParamField query="limit" type="number">
  Maximum rows to return. Omit for all matching rows.
</ParamField>

<ParamField query="offset" type="number">
  Number of rows to skip. Default: `0`.
</ParamField>

<RequestExample dropdown>
  ```bash cURL theme={null}
  curl https://api.exponent.finance/trades/user/HmzCnQBzSFW4THri7t9f9tcVBHXT7fuw4iczfPKMwEL8
  ```

  ```python Python theme={null}
  import requests

  response = requests.get("https://api.exponent.finance/trades/user/HmzCnQBzSFW4THri7t9f9tcVBHXT7fuw4iczfPKMwEL8", timeout=30)
  response.raise_for_status()
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.exponent.finance/trades/user/HmzCnQBzSFW4THri7t9f9tcVBHXT7fuw4iczfPKMwEL8");
  if (!response.ok) {
    throw new Error(`Request failed: ${response.status}`);
  }
  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

<ApiResponse errors={{"500": {"error": "<message>"}}}>
  <ResponseField name="action" type="string">
    Indexed action within the activity, such as a trade, liquidity change, or claim.
  </ResponseField>

  <ResponseField name="amount_lp" type="number">
    LP quantity associated with the activity, in raw liquidity or LP-token units according to the product.
  </ResponseField>

  <ResponseField name="amount_mint" type="string">
    Mint identifying the token used for the activity amount.
  </ResponseField>

  <ResponseField name="amount_pt" type="number">
    PT quantity associated with the activity, in raw token units.
  </ResponseField>

  <ResponseField name="amount_sy" type="number">
    SY quantity associated with the activity, in raw token units.
  </ResponseField>

  <ResponseField name="amount_yt" type="number">
    YT quantity associated with the activity, in raw token units.
  </ResponseField>

  <ResponseField name="claim_amount_usd" type="number">
    USD value of rewards or interest claimed.
  </ResponseField>

  <ResponseField name="claim_type" type="string">
    Type of claim recorded by the indexer.
  </ResponseField>

  <ResponseField name="emission_mint" type="string">
    Mint of the reward token paid or accrued.
  </ResponseField>

  <ResponseField name="fee_pt_collected" type="number">
    PT fees collected by the operation, in raw PT units.
  </ResponseField>

  <ResponseField name="fee_sy_collected" type="number">
    SY fees collected by the operation, in raw SY units.
  </ResponseField>

  <ResponseField name="implied_apy" type="number">
    Indexed implied rate associated with this order or execution.
  </ResponseField>

  <ResponseField name="in_amount" type="number">
    Raw input-token quantity spent by the execution.
  </ResponseField>

  <ResponseField name="liquidity_type" type="string">
    Liquidity product associated with the activity, when applicable.
  </ResponseField>

  <ResponseField name="ln_fee_rate_root" type="number">
    Market’s logarithmic fee-rate parameter recorded for the activity.
  </ResponseField>

  <ResponseField name="lower_tick" type="number">
    Lower tick bounding the liquidity position.
  </ResponseField>

  <ResponseField name="market_base_mint" type="string">
    Base-asset mint of the market where the activity occurred.
  </ResponseField>

  <ResponseField name="out_amount" type="number">
    Raw output-token quantity received from the execution.
  </ResponseField>

  <ResponseField name="price" type="number">
    Execution price as recorded for the corresponding product.
  </ResponseField>

  <ResponseField name="sy_exchange_rate" type="number">
    Underlying asset value per SY token at the time of the event.
  </ResponseField>

  <ResponseField name="trade_ts" type="string">
    Indexed trade timestamp in ISO 8601 format.
  </ResponseField>

  <ResponseField name="tranche_side" type="string">
    Tranche: `senior` or `junior`.
  </ResponseField>

  <ResponseField name="tranching_market_address" type="string">
    Tranching market associated with the position or campaign.
  </ResponseField>

  <ResponseField name="type" type="string">
    Product or event category used to interpret the activity’s amounts.
  </ResponseField>

  <ResponseField name="upper_tick" type="number">
    Upper tick bounding the liquidity position.
  </ResponseField>

  <ResponseField name="vault_address" type="string">
    Yield or strategy vault associated with this record.
  </ResponseField>

  <ResponseField name="venue" type="string">
    Execution venue recorded by the indexer.
  </ResponseField>

  <ResponseField name="execution_id" type="string | null">
    Identifier grouping the routes and signatures belonging to one execution.
  </ResponseField>

  <ResponseField name="tx_signatures" type="string[]">
    Transaction signatures included in the grouped execution.
  </ResponseField>

  <ResponseField name="routes" type="object[]">
    Venue-level legs that make up the grouped execution.

    <Expandable title="child attributes">
      <ResponseField name="routes[].venue" type="string">
        Execution venue recorded by the indexer.
      </ResponseField>

      <ResponseField name="routes[].inAmount" type="number">
        Raw input-token quantity routed through this venue.
      </ResponseField>

      <ResponseField name="routes[].outAmount" type="number">
        Raw output-token quantity received through this venue.
      </ResponseField>

      <ResponseField name="routes[].syExchangeRate" type="number">
        Underlying asset value per SY token at the time of the event.
      </ResponseField>
    </Expandable>
  </ResponseField>
</ApiResponse>

<ResponseExample>
  ```json 200 theme={null}
  [
    {
      "vault_address": "78MLjMXyKyjwXtHXCuZHnBUH5wMh89KwBpvoFvcBzxN1",
      "trade_ts": "2026-06-01T15:30:25+00:00",
      "type": "farm",
      "action": "sell",
      "in_amount": 767872329071,
      "out_amount": 2511036473,
      "implied_apy": 6.54692577629816,
      "amount_sy": null,
      "amount_pt": null,
      "amount_yt": null,
      "amount_lp": null,
      "liquidity_type": null,
      "lower_tick": null,
      "upper_tick": null,
      "venue": "amm",
      "sy_exchange_rate": 1.08428018,
      "ln_fee_rate_root": null,
      "claim_type": null,
      "emission_mint": null,
      "claim_amount_usd": null,
      "fee_sy_collected": null,
      "fee_pt_collected": null,
      "tranching_market_address": null,
      "tranche_side": null,
      "amount_mint": null,
      "market_base_mint": null,
      "price": 0.0032701223601037215,
      "execution_id": "yt:5AVm5Ch2KA52VZoqWsbiV6hHw8Z2VniDHbofCw4EnWUJ8s7LRSTZcjwTYQ4cK5ASBc4j8xovSz8Nid9GaKguMpRv",
      "tx_signatures": [
        "5AVm5Ch2KA52VZoqWsbiV6hHw8Z2VniDHbofCw4EnWUJ8s7LRSTZcjwTYQ4cK5ASBc4j8xovSz8Nid9GaKguMpRv"
      ],
      "routes": [
        {
          "venue": "amm",
          "inAmount": 767872329071,
          "outAmount": 2511036473,
          "syExchangeRate": 1.08428018
        }
      ]
    },
    {
      "vault_address": "78MLjMXyKyjwXtHXCuZHnBUH5wMh89KwBpvoFvcBzxN1",
      "trade_ts": "2026-06-01T15:29:35+00:00",
      "type": "farm",
      "action": "claim",
      "in_amount": 2422813154,
      "out_amount": null,
      "implied_apy": null,
      "amount_sy": null,
      "amount_pt": null,
      "amount_yt": null,
      "amount_lp": null,
      "liquidity_type": null,
      "lower_tick": null,
      "upper_tick": null,
      "venue": null,
      "sy_exchange_rate": 1,
      "ln_fee_rate_root": null,
      "claim_type": "interest",
      "emission_mint": null,
      "claim_amount_usd": 199.981258118921,
      "fee_sy_collected": null,
      "fee_pt_collected": null,
      "tranching_market_address": null,
      "tranche_side": null,
      "amount_mint": null,
      "market_base_mint": null,
      "price": null,
      "execution_id": null,
      "tx_signatures": [
        "4727udmrir7hotcPeex8CUnxRhCpxbVdNXMx8Z4iugq48PEgBAvbNPEciH6QSuUZa4cZydsyeEZDrfboWsK2WWvT"
      ],
      "routes": []
    }
  ]
  ```

  ```json 500 theme={null}
  {
    "error": "<message>"
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.