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

# Recent Transactions

> Returns Hadron and fee-split (sidecar) transactions for a pool, ordered newest first. Cursor-paginated — you can walk the full history of a pool by following `next_cursor`.

## Path Parameters

<ParamField path="address" type="string" required>
  The pool config PDA address.
</ParamField>

## Query Parameters

<ParamField query="limit" type="integer" default="50">
  Page size — number of transactions to return per request. Maximum `200`.
</ParamField>

<ParamField query="cursor" type="string">
  Opaque pagination cursor. Omit on the first request; on subsequent
  requests, pass the `next_cursor` value from the previous response to
  fetch the next page. When the server returns `next_cursor: null`
  (equivalently `has_more: false`), you have reached the end of the
  pool's history.
</ParamField>

<ParamField query="instruction_type" type="string">
  Filter by instruction type (e.g. `SwapExactIn`, `Deposit`, `Distribute`). See the Instruction Types and Fee-Split Instruction Types tables below for possible values. When set, only transactions matching this type are returned. Pages may contain fewer than `limit` results.
</ParamField>

<ParamField query="cluster" type="string" default="mainnet-beta">
  Solana cluster — `mainnet-beta` or `devnet`.
</ParamField>

## Response

<ResponseField name="data" type="array">
  Array of transaction records on this page, ordered by most recent first.

  <Expandable title="Transaction record">
    <ResponseField name="signature" type="string">
      Solana transaction signature.
    </ResponseField>

    <ResponseField name="timestamp" type="integer">
      Transaction timestamp (Unix seconds).
    </ResponseField>

    <ResponseField name="slot" type="integer">
      Solana slot number.
    </ResponseField>

    <ResponseField name="ix_index" type="integer">
      Zero-based ordinal among the **Hadron** instructions in this
      transaction — not the absolute Solana instruction position. The
      first Hadron invocation is `0`, the second is `1`, and so on;
      non-Hadron instructions (compute budget, token transfers, other
      programs) are skipped when counting. Top-level Hadron
      instructions are counted before Hadron CPIs from inner
      instructions. A single Solana transaction can invoke the Hadron
      program multiple times (e.g. a router or batch); each invocation
      is recorded as its own row, disambiguated by `(signature, ix_index)`.
      Fee-split (sidecar) instructions in a transaction are recorded with a
      separate, higher `ix_index` range so they never collide with the Hadron
      rows of the same transaction (a fee-split call often CPIs into Hadron).
    </ResponseField>

    <ResponseField name="instruction_type" type="string">
      The instruction that was executed — a Hadron instruction or a fee-split (sidecar) instruction. See the tables below for possible values.
    </ResponseField>

    <ResponseField name="success" type="boolean">
      Whether the transaction succeeded.
    </ResponseField>

    <ResponseField name="error" type="string | null">
      Error message if the transaction failed, `null` otherwise.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="next_cursor" type="string | null">
  Cursor to pass as `?cursor=...` on the next request to fetch the
  following page. `null` when there are no more transactions (end of history).
</ResponseField>

<ResponseField name="has_more" type="boolean">
  `true` if more transactions are available beyond this page, `false`
  if this is the last page.
</ResponseField>

### Instruction Types

| Type                          | Description                                                   |
| ----------------------------- | ------------------------------------------------------------- |
| `Initialize`                  | Pool initialization                                           |
| `Deposit`                     | Liquidity deposit                                             |
| `Withdraw`                    | Liquidity withdrawal                                          |
| `SwapExactIn`                 | Swap with exact input amount                                  |
| `SetCurve`                    | Price curve update                                            |
| `UpdateMidprice`              | Oracle midprice update                                        |
| `InitializeFeeConfig`         | Global fee config initialization                              |
| `UpdateFeeConfig`             | Global fee config update                                      |
| `SetRiskCurve`                | Risk curve update                                             |
| `UpdateBaseSpread`            | Base spread factor update                                     |
| `UpdateMidpriceAndBaseSpread` | Combined midprice and spread update                           |
| `SwitchPriceCurve`            | Switch active price curve slot                                |
| `SwitchRiskCurve`             | Switch active risk curve slot                                 |
| `InitializeSpreadConfig`      | Spread config initialization                                  |
| `UpdateSpreadConfig`          | Spread config update                                          |
| `UpdateDeltaStaleness`        | Delta staleness parameter update                              |
| `NominateAuthority`           | Nominate new pool authority                                   |
| `AcceptAuthority`             | Authority transfer acceptance                                 |
| `SubmitCurveUpdates`          | Batch curve update submission                                 |
| `ApplyCurveUpdates`           | Apply pending curve updates                                   |
| `ClosePool`                   | Close and reclaim pool rent                                   |
| `SetPoolState`                | Pool state change (pause/freeze/resume)                       |
| `AllocateCurvePrefabs`        | Allocate curve prefab storage                                 |
| `RotateFeeAdmin`              | Rotate fee admin key                                          |
| `InitializePoolFeeConfig`     | Per-pool fee config initialization                            |
| `UpdatePoolFeeConfig`         | Per-pool fee config update                                    |
| `SetAssetFee`                 | Set a per-asset-pair fee override on the global fee config    |
| `ValidateCurveUpdates`        | Dry-run validation of queued curve updates                    |
| `RemoveSpreadTriggers`        | Remove specific spread triggers                               |
| `UpdateDrawdownGuard`         | Update drawdown guard threshold / rotation interval           |
| `UpdateFactorClamp`           | Update the combined-factor clamp ceiling                      |
| `ClosePoolFeeConfig`          | Revert a pool from per-pool fee back to the global fee        |
| `RotateDepositAuthority`      | Rotate the deposit authority                                  |
| `RotateWithdrawAuthority`     | Rotate the withdraw authority                                 |
| `RotateQuotingAuthority`      | Rotate the quoting authority (replaces `SetQuotingAuthority`) |
| `RotateSpreadAdmin`           | Rotate the spread config admin                                |
| `RotatePauseAuthority`        | Rotate the pause authority                                    |

### Fee-Split Instruction Types

Instructions from the fee-split sidecar program. They appear alongside Hadron instructions in this endpoint, attributed to the pool via the fee-split config's `hadron_pool_config`, and are filterable with `instruction_type`. Per-recipient credit and distribution amounts are not on these rows — those are tracked separately by the sidecar indexer.

| Type                   | Description                                                                  |
| ---------------------- | ---------------------------------------------------------------------------- |
| `InitializeSplit`      | Fee-split config created for the pool                                        |
| `UpdateCustomerDomain` | Recipient set / split-weight (ppm) update (the "update fee split" operation) |
| `UpdateHadronSlot`     | Hadron-slot (protocol recipient) update                                      |
| `Distribute`           | Pending fees paid out to a recipient                                         |
| `Reinvest`             | A recipient's pending fees reinvested into the pool                          |
| `CloseSplit`           | Fee-split config closed                                                      |

<ResponseExample>
  ```json theme={null}
  {
    "data": [
      {
        "signature": "3Qm9q3hP8oLpAaQ7s2y1Wb6kZ4uVnRceJ2hN1xVtQz8Kfw5rXdCgu7mEb9PtVZ2sYHn4aLrDk6oW3fJq1RcT5Bv",
        "timestamp": 1773239510,
        "slot": 405713340,
        "ix_index": 1000,
        "instruction_type": "Distribute",
        "success": true,
        "error": null
      },
      {
        "signature": "XK7Cu5FSNkBP55ZMXLcMv1ZVUTB2cYCVrngtWHWf7ci8L3XjuVgnw1FwNQa7vsVNZ2QrHdwGVHkQqboLENp4Qj2",
        "timestamp": 1773239503,
        "slot": 405713326,
        "ix_index": 0,
        "instruction_type": "UpdateDeltaStaleness",
        "success": true,
        "error": null
      },
      {
        "signature": "5ZVLukBf3HfmT7d9Emte1fobjhtHsjps5TXtNZboTK3di76NbVUxHsLDFuzcnyhnjYLNnVdJajKg9k5NJCs9CLCi",
        "timestamp": 1773239448,
        "slot": 405713180,
        "ix_index": 0,
        "instruction_type": "SwapExactIn",
        "success": true,
        "error": null
      }
    ],
    "next_cursor": "eyJpZCI6ImozZDd4a203...",
    "has_more": true
  }
  ```
</ResponseExample>
