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

# Scan Transaction History

> Search an address's history server-side for transactions that call program instructions or touch token mints, and return the parsed matches, their signatures, or a count.

The request body, response schema, and examples on this page are generated from the OpenAPI definition.

Scan walks one address's history, keeps the transactions that match your `match` criteria, and parses only those. Use it instead of paging through [Parsed Transaction History](https://www.helius.dev/docs/api-reference/parsed-events/transaction-history.md) and filtering client-side.

By default, each item in `data` uses the same `TransactionResult` shape returned by [Parse Transactions](https://www.helius.dev/docs/api-reference/parsed-events/transactions.md). Set `returnShape` to get only the matching signatures or only a count. The response also includes a `scan` summary that tells you how far the scan got and why it stopped.

## How Scan Works

1. Scan fetches the address's history in pages of up to 1,000 transactions, in `sortOrder`, within the `slot`, `time`, and signature bounds you set.
2. It keeps the transactions that match every criterion set in `match`.
3. It stops at the first of these: `limit` matches found (default `transactions` shape only), `budget.maxScannedTransactions` scanned, the end of the history or window, or the request time limit.

A scan that stops early is still a `200`. Call again with the returned `paginationToken` while one is present, even when `data` is empty.

## Match Criteria

`match` is required. Set `programs`, `mints`, or both. When you set both, a transaction must match both.

### Match by Program

`programs` lists up to 20 programs, each at most once. A transaction matches when it has an instruction of any of them, top-level or inner (CPI), within the program's `scope`.

For each program, you can narrow the match:

* `instructions`: instruction names from any IDL version of the program, as the IDL spells them or in snake\_case. A name not found in the program's IDLs returns `400`.
* `discriminators`: instruction data prefixes, each 1 to 8 hex-encoded bytes with an optional `0x` prefix. Use these for programs without an IDL.
* Set either list or both. With both, an instruction matches when it is one of the named instructions or its data starts with one of the discriminators. Omit both to match any instruction of the program.
* Each list accepts at most 50 entries per program.

To confirm a program's decoded instruction names, use the Parsed Streams [`describeProgram`](https://www.helius.dev/docs/parsed-streams/quickstart#discovery) method.

### Match by Mint

`mints` lists up to 20 objects of the form `{ "mint": "...", "scope": "address" }`, each mint at most once. A transaction matches when one of its pre or post token balances is of one of the mints, within that mint's `scope`.

When you scan a wallet for a mint, set `tokenAccounts` to `balanceChanged`. By default, history leaves out transactions that touch only the wallet's token accounts and not the wallet itself, which includes many incoming token transfers.

### Match Native SOL

Native SOL has no token balances, so scan matches it on lamports. Use the native SOL mint `So11111111111111111111111111111111111111111` (wrapped SOL is `So11111111111111111111111111111111111111112`):

* With `address` scope, a transaction matches when the scanned address's lamports changed.
* With `transaction` scope, it matches when any account's lamports changed.

The fee charged to the fee payer does not count. Each account is compared on its own, so lamports that leave an account and come back in the same transaction do not count. Native SOL matching catches SOL a program pays out without a transfer instruction, such as a Pump.fun sell. It also catches incidental movements, such as Jito tips and rent paid for or refunded from accounts.

### Match Scope

Each program and each mint takes a `scope`:

| `scope` | A program's instruction counts when | A mint's token balance counts when |
| - | - | - |
| `address` (default) | One of its accounts is `address`, a token account `address` owns, or a token account whose mint is `address`, or `address` is the program itself. | Its token account is `address` or is owned by `address`, or its mint is `address`. |
| `transaction` | It appears anywhere in the transaction. | It appears anywhere in the transaction. |

Use `transaction` scope when the scanned address is in the transaction but not in the instruction or balance you match. For example, the address only pays the fee, executes a multisig transaction, or is missing from an Anchor event CPI. Scanning a token's mint for transactions that also hold USDC needs `transaction` scope on the USDC entry.

Token account ownership comes from the `owner` recorded on each token balance. Older transactions that do not record it match `address` scope only on `address` itself.

## Return Shapes

`returnShape` sets what the response carries for the matches:

| `returnShape` | `data` | Use it to |
| - | - | - |
| `transactions` (default) | Parsed matches, up to `limit`. | Read the decoded instructions, transfers, and summaries. |
| `signatures` | One `{ signature, slot, transactionIndex, blockTime }` object per match. | Collect matching signatures without parsing them. |
| `count` | Omitted. `scan.matchedTransactions` is the number of matches. | Count matches in a range. |

`signatures` and `count` ignore `limit` and `rawTransaction`. They return every match in the range a request scans, so they stop only on `windowEnd`, `budget`, or `deadline`. To count a whole history, keep calling with `paginationToken` and add up `scan.matchedTransactions`.

Each item in `data` with `returnShape: "signatures"` looks like this:

```json theme={"system"}
{
  "signature": "5zmGhmd3JZxXzz8MnA8MM1K7PXRwA1z35n3xT6ZJGRz3sAi25p8jaZuPWFCB4nEPx7DUke9y3pwrd4V7xAFozQBy",
  "slot": 460869102,
  "transactionIndex": 203,
  "blockTime": 1792848886
}
```

All three shapes cost the same, since credits depend on the history pages scanned, not on what is returned.

## Example Requests

### Pump.fun Buys and Sells

Scan the Pump.fun program's history for `buy` and `sell` instructions:

```json theme={"system"}
{
  "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
  "match": {
    "programs": [
      {
        "programId": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
        "instructions": ["buy", "sell"]
      }
    ]
  },
  "limit": 100
}
```

Pump.fun also has variants such as `buy_exact_sol_in`, `buy_v2`, and `sell_v2`. List every instruction name you want to match.

### Buys and Sells of One Token

To get one token's Pump.fun trades, scan the token's mint address instead of the program. The mint's history holds only that token's activity, and each buy or sell instruction lists the mint as an account, so it matches with the default `address` scope:

```json theme={"system"}
{
  "address": "<MINT_ADDRESS>",
  "match": {
    "programs": [
      {
        "programId": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
        "instructions": ["buy", "sell"]
      }
    ]
  }
}
```

To keep only the token's transactions that also involve a USDC token account, add USDC with `transaction` scope. With the default `address` scope, a USDC balance would have to belong to the mint address, so nothing would match:

```json theme={"system"}
{
  "address": "<MINT_ADDRESS>",
  "match": {
    "mints": [
      { "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "scope": "transaction" }
    ]
  }
}
```

### A Wallet's Trades Across Two Programs

List several programs to match a call to any of them. This request returns a wallet's Pump.fun and PumpSwap trades as signatures only:

```json theme={"system"}
{
  "address": "<WALLET_ADDRESS>",
  "match": {
    "programs": [
      {
        "programId": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
        "instructions": ["buy", "sell"]
      },
      {
        "programId": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
        "instructions": ["buy", "sell"]
      }
    ]
  },
  "returnShape": "signatures"
}
```

### A Wallet's USDC Activity in a Time Range

Scan a wallet's history for transactions that touched USDC during 2025. `tokenAccounts: "balanceChanged"` includes transfers that touched only the wallet's USDC token account:

```json theme={"system"}
{
  "address": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52",
  "match": {
    "mints": [{ "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" }]
  },
  "tokenAccounts": "balanceChanged",
  "time": { "gte": 1735689600, "lte": 1767225599 }
}
```

To get only the number of matching transactions, add `"returnShape": "count"`.

### A Wallet's SOL Movements

Scan a wallet for transactions that changed its SOL balance, beyond the fee it paid, during 2025. This includes SOL that a program paid out without a transfer instruction:

```json theme={"system"}
{
  "address": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52",
  "match": {
    "mints": [{ "mint": "So11111111111111111111111111111111111111111" }]
  },
  "time": { "gte": 1735689600, "lte": 1767225599 }
}
```

## Pagination and Stop Reasons

`scan.stoppedOn` tells you why the request ended:

| `stoppedOn` | Meaning | `paginationToken` |
| - | - | - |
| `windowEnd` | Reached the end of the history or the requested window. | Missing. The scan is complete. |
| `limit` | Returned `limit` matches. Only with the default `transactions` shape. | Resumes right after the last returned match, so no match is skipped. |
| `budget` | Scanned `budget.maxScannedTransactions` transactions. | Resumes at the next history page. |
| `deadline` | Reached the request time limit. | Resumes at the next history page. A page cut off by the deadline is fetched again on the next call. |

`scan.scannedThrough` gives the slot and block time of the last transaction scanned, so you can report progress through long histories.

A scan for a rare instruction can use up its budget without finding a match. The response then has an empty `data` array and still returns a `paginationToken`, so keep scanning:

```json theme={"system"}
{
  "data": [],
  "paginationToken": "460903064:422",
  "scan": {
    "stoppedOn": "budget",
    "scannedTransactions": 2000,
    "matchedTransactions": 0,
    "scannedThrough": { "slot": 460903064, "blockTime": 1792856105 },
    "creditsCharged": 12
  }
}
```

This loop keeps scanning until the history is exhausted:

```javascript scan-pumpfun-trades.js theme={"system"}
const API_KEY = process.env.HELIUS_API_KEY;

if (!API_KEY) {
  console.error("Missing HELIUS_API_KEY.");
  process.exit(1);
}

const URL = `https://mainnet.helius-rpc.com/v1/parsed-events/scan?api-key=${API_KEY}`;
const PUMP_PROGRAM = "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P";

async function scan(paginationToken) {
  const response = await fetch(URL, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      address: PUMP_PROGRAM,
      match: {
        programs: [{ programId: PUMP_PROGRAM, instructions: ["buy", "sell"] }],
      },
      limit: 100,
      ...(paginationToken && { paginationToken }),
    }),
  });

  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }

  return response.json();
}

let paginationToken;

do {
  const page = await scan(paginationToken);

  for (const result of page.data) {
    console.log(result.signature, result.parsed?.slot);
  }

  console.log(
    `stopped on ${page.scan.stoppedOn}: scanned ${page.scan.scannedTransactions}, ` +
      `matched ${page.scan.matchedTransactions}, charged ${page.scan.creditsCharged} credits`
  );

  // Keep going while a token is returned, even when this page had no matches.
  paginationToken = page.paginationToken;
} while (paginationToken);
```

> [!TIP]
>
> Scan the narrowest address you can. Every transaction in the address's history counts toward the budget, so the fewer unrelated transactions an address has, the more matches each request finds.

## Credits

Each scan costs **10 credits plus 1 credit per history page scanned**. A page holds up to 1,000 transactions, so a scan with the default budget of 10,000 transactions costs at most 20 credits. A page cut off by the deadline is not scanned and not charged.

Each response reports its charge in `scan.creditsCharged`. See [Credits](https://www.helius.dev/docs/billing/credits.md) for plan pricing.

## Errors

| Status | When |
| - | - |
| `400` | The body is invalid or has unknown fields, `match` sets neither `programs` nor `mints`, a program or mint is listed more than once, an address or mint is invalid, an instruction name is not in the program's IDLs, a list exceeds its limit, `scope`, `returnShape`, `rawTransaction`, or `tokenAccounts` has an unknown value, `limit` is outside 1 to 100 with the `transactions` shape, or `budget.maxScannedTransactions` is outside 1 to 10,000. |
| `500` | The request failed on the server, for example because a stored transaction in the scanned range could not be decoded. No partial results are returned. |
| `503` | The service is at capacity, or the first history page did not complete before the request time limit. Retry the request. |

Request-level errors return a JSON body with an `error` message, such as `{"error": "limit must be between 1 and 100"}`. A body with an unknown field, such as `includeRawTransaction` (use `rawTransaction`), or with `mints` as plain strings instead of `{ "mint": "..." }` objects, returns `{"error": "invalid request payload"}`.

## Request Parameters

**address** `string` *required*

Address whose history is scanned.

**match** `object` *required*

What a transaction must match. Set `programs`, `mints`, or both. When both are set, a transaction must match both.

**match.programs** `array`

Programs to match, at most 20, each at most once. A transaction matches when it has an instruction of any of them, top-level or inner (CPI), within the program's `scope`.

**match.programs\[].programId** `string` *required*

Program address.

**match.programs\[].instructions** `array`

Instruction names from any IDL version of the program, as the IDL spells them or in snake\_case. At most 50. Can be combined with `discriminators`.

**match.programs\[].discriminators** `array`

Instruction data prefixes, each 1 to 8 hex-encoded bytes with an optional `0x` prefix. At most 50. Can be combined with `instructions`.

**match.programs\[].scope** `string` (default: address)

Which of the program's instructions count. `address` counts only instructions with an account that is `address`, a token account `address` owns, or a token account whose mint is `address`, or every instruction when `address` is the program. `transaction` counts any instruction of the program in the transaction.

* `address`
* `transaction`

**match.mints** `array`

Mints to match, at most 20, each at most once. A transaction matches when one of its pre or post token balances is of one of these mints, within the mint's `scope`.

**match.mints\[].mint** `string` *required*

Token mint address. The native SOL mint `So11111111111111111111111111111111111111111` matches on lamport changes instead of token balances, not counting the fee.

**match.mints\[].scope** `string` (default: address)

Which of the mint's token balances count. `address` counts only balances whose token account is `address` or is owned by it, or whose mint is `address`. For native SOL, only changes to `address`'s lamports count. `transaction` counts any balance of the mint in the transaction. For native SOL, a change to any account's lamports counts.

* `address`
* `transaction`

**returnShape** `string` (default: transactions)

What the response carries for the matches: `transactions` (parsed matches in `data`, up to `limit`), `signatures` (`signature`, `slot`, `transactionIndex`, and `blockTime` per match in `data`), or `count` (no `data`; `scan.matchedTransactions` is the number of matches). `signatures` and `count` ignore `limit` and `rawTransaction`.

* `transactions`
* `signatures`
* `count`

**limit** `number` (default: 100)

Most matches to return with the `transactions` shape, from 1 to 100.

**budget** `object`

Limits on how much history one request scans.

**budget.maxScannedTransactions** `number` (default: 10000)

Most transactions to scan in this request, from 1 to 10,000.

**beforeSignature** `string`

Scan transactions before this signature.

**afterSignature** `string`

Scan transactions after this signature.

**paginationToken** `string`

Cursor returned by a previous scan. Shape is `slot:transactionIndex`.

**sortOrder** `string` (default: desc)

Order in which history is scanned and matches are returned.

* `asc`
* `desc`

**commitment** `string` (default: confirmed)

Commitment level used for the history fetch. `processed` is not supported.

* `confirmed`
* `finalized`

**status** `string` (default: succeeded)

Execution result to include. Filtering happens before matching, so excluded transactions do not count toward the budget.

* `succeeded`
* `failed`
* `any`

**tokenAccounts** `string` (default: none)

Whether to include transactions that reference only a token account owned by `address`, not `address` itself: `none` leaves them out, `balanceChanged` includes those that change the token account's balance, and `all` includes all of them. Use `balanceChanged` when you scan a wallet by mint.

* `none`
* `balanceChanged`
* `all`

**minContextSlot** `number`

Minimum slot at which the request can be evaluated.

**rawTransaction** `string` (default: none)

Encoding of the original Solana transaction returned as `rawTransaction` on each successful result, in the `getTransaction` shape. Applies to the `transactions` shape only.

* `none`
* `json`
* `jsonParsed`
* `base64`

**slot** `object`

Slot comparison bounds. Each bound is optional.

**slot.gt** `number`

Match values greater than this value.

**slot.gte** `number`

Match values greater than or equal to this value.

**slot.lt** `number`

Match values less than this value.

**slot.lte** `number`

Match values less than or equal to this value.

**time** `object`

Block-time comparison bounds in Unix seconds. Each bound is optional.

**time.gt** `number`

Match values greater than this value.

**time.gte** `number`

Match values greater than or equal to this value.

**time.lt** `number`

Match values less than this value.

**time.lte** `number`

Match values less than or equal to this value.


## OpenAPI

````yaml openapi/parsed-events.yaml POST /v1/parsed-events/scan
openapi: 3.0.3
info:
  title: Parsed Events
  version: 0.1.0
  description: Parse Solana transactions and parsed transaction history with Parsed Events.
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/scan:
    post:
      tags:
        - Parsed Events
      summary: Scan Transaction History
      description: >-
        Search an address's history for transactions that call one of a set of
        programs, touch one of a set of token mints, or both, and return the
        parsed matches, their signatures, or a count.
      operationId: scanParsedTransactionHistory
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScanRequest'
            examples:
              Pump.fun buys and sells:
                value:
                  address: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                  match:
                    programs:
                      - programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                        instructions:
                          - buy
                          - sell
                  limit: 1
              Rare instruction, budget stop:
                value:
                  address: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                  match:
                    programs:
                      - programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                        instructions:
                          - set_params
                  budget:
                    maxScannedTransactions: 2000
              Count matches:
                value:
                  address: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                  match:
                    programs:
                      - programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                        instructions:
                          - set_params
                  returnShape: count
                  budget:
                    maxScannedTransactions: 2000
              Token transactions with a USDC account:
                value:
                  address: <MINT_ADDRESS>
                  match:
                    mints:
                      - mint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
                        scope: transaction
                  returnShape: signatures
      responses:
        '200':
          description: >-
            The matches in the requested `returnShape` and a summary of the
            scan. A partial result is still a 200; continue with
            `paginationToken` while one is returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScanPage'
              examples:
                Stopped on limit:
                  value:
                    data:
                      - signature: >-
                          5zmGhmd3JZxXzz8MnA8MM1K7PXRwA1z35n3xT6ZJGRz3sAi25p8jaZuPWFCB4nEPx7DUke9y3pwrd4V7xAFozQBy
                        parserStatus: OK
                        parsed:
                          slot: 460869102
                          blockTime: 1792848886
                          fee: 45000
                          feePayer: Gygj9QQby4j2jryqyqBHvLP7ctv2SaANgh4sCb69BUpA
                          transactionStatus: OK
                          error: null
                          decodedError: null
                          nativeTransfers:
                            - fromUserAccount: BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                              toUserAccount: 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                              amount: 4207183
                          tokenTransfers:
                            - fromUserAccount: 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                              toUserAccount: BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                              fromTokenAccount: 7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                              toTokenAccount: 7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                              rawTokenAmount: 612181177082
                              decimals: 6
                              tokenStandard: Fungible
                              mint: 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                          summary:
                            type: swap
                            description: >-
                              BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                              swapped 0.004207183 SOL for 612181.177082
                              3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump via
                              Pump.fun
                            parsedData:
                              type: swap
                              protocol: pump_fun
                              kind: buy
                              in_amount: '4207183'
                              actual_out_amount: '612181177082'
                              input_mint: So11111111111111111111111111111111111111112
                              output_mint: 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                              inner_swaps: []
                          instructions:
                            - instructionIndex: 0
                              innerInstructionIndex: null
                              stackHeight: 1
                              programId: ComputeBudget111111111111111111111111111111
                              rawAccounts: []
                              rawData: HMypLP
                              summary: null
                              programName: compute_budget
                              instructionName: set_compute_unit_limit
                              decoded:
                                args:
                                  units: '400000'
                                accounts: []
                            - instructionIndex: 1
                              innerInstructionIndex: null
                              stackHeight: 1
                              programId: ComputeBudget111111111111111111111111111111
                              rawAccounts: []
                              rawData: 3gJqkocMWaMm
                              summary: null
                              programName: compute_budget
                              instructionName: set_compute_unit_price
                              decoded:
                                args:
                                  micro_lamports: '100000'
                                accounts: []
                            - instructionIndex: 2
                              innerInstructionIndex: null
                              stackHeight: 1
                              programId: MAyhSmzXzV1pTf7LsNkrNwkWKTo4ougAJ1PPg47MD4e
                              rawAccounts:
                                - Gygj9QQby4j2jryqyqBHvLP7ctv2SaANgh4sCb69BUpA
                                - 13ec7XdrjF3h3YcqBTFDSReRcUFwbCnJaAQspM4j6DDJ
                                - CNtxytSi1JNJgmBM444pGXK5eUEy5B2Q3haBHw2fzdoG
                                - 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                - 7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                - BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                - '11111111111111111111111111111111'
                                - TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
                                - 4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf
                                - 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                - GesfTA3X2arioaHp8bbKdjG9vJtskViWACZoYvxp4twS
                                - 7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                - HTGkqssCRhyE6rCBDDKQVqTM5LcFPwH8r7rmoMuvtKCD
                                - Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1
                                - 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                                - Hq2wp8uJ9jCPsYgNHex8RtqdvMPfVGoYwjvF1ATiwn2Y
                                - FGFrX2q1iAjyAojjeyFDxXqdmvegjPpSWsrPmrJjeQ2f
                                - 8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt
                                - pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
                                - 8FoNgzmjuSmiy86EPCWxvv1q7oJSu2WGA7wPymwki2LJ
                                - MAyhSmzXzV1pTf7LsNkrNwkWKTo4ougAJ1PPg47MD4e
                                - 6MneqwSEV63Ujx1KZX8ZDs5freLUyo61DoSdEeQCjNjk
                                - 5YxQFdt3Tr9zJLvkFccqXVUwhdTWJQc1fFg2YPbxvxeD
                              rawData: 23s1EunhJwrvzz8YSBTPv5WDZGm8uym8KQXhF3u
                              summary: null
                              programName: null
                              instructionName: null
                              decoded: null
                            - instructionIndex: 2
                              innerInstructionIndex: 0
                              stackHeight: 2
                              programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                              rawAccounts:
                                - 4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf
                                - GesfTA3X2arioaHp8bbKdjG9vJtskViWACZoYvxp4twS
                                - 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                - 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                - 7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                - 7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                - BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                - '11111111111111111111111111111111'
                                - TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
                                - HTGkqssCRhyE6rCBDDKQVqTM5LcFPwH8r7rmoMuvtKCD
                                - Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1
                                - 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                                - Hq2wp8uJ9jCPsYgNHex8RtqdvMPfVGoYwjvF1ATiwn2Y
                                - FGFrX2q1iAjyAojjeyFDxXqdmvegjPpSWsrPmrJjeQ2f
                                - 8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt
                                - pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
                                - 6MneqwSEV63Ujx1KZX8ZDs5freLUyo61DoSdEeQCjNjk
                                - 5YxQFdt3Tr9zJLvkFccqXVUwhdTWJQc1fFg2YPbxvxeD
                              rawData: i43WeUBGKA8F2B6dwt5RBzavSKrhGu93LB
                              summary:
                                type: swap
                                description: >-
                                  BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                  swapped 0.004207183 SOL for 612181.177082
                                  3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                  via Pump.fun
                                parsedData:
                                  type: swap
                                  protocol: pump_fun
                                  kind: buy
                                  in_amount: '4207183'
                                  actual_out_amount: '612181177082'
                                  input_mint: So11111111111111111111111111111111111111112
                                  output_mint: 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                  inner_swaps: []
                              programName: pump
                              instructionName: buy
                              decoded:
                                args:
                                  amount: '612181177082'
                                  max_sol_cost: '4207183'
                                  track_volume:
                                    - false
                                accounts:
                                  - name: global
                                    pubkey: >-
                                      4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf
                                    isSigner: false
                                    isWritable: false
                                  - name: fee_recipient
                                    pubkey: >-
                                      GesfTA3X2arioaHp8bbKdjG9vJtskViWACZoYvxp4twS
                                    isSigner: false
                                    isWritable: true
                                  - name: mint
                                    pubkey: >-
                                      3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                    isSigner: false
                                    isWritable: false
                                  - name: bonding_curve
                                    pubkey: >-
                                      2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                    isSigner: false
                                    isWritable: true
                                  - name: associated_bonding_curve
                                    pubkey: >-
                                      7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                    isSigner: false
                                    isWritable: true
                                  - name: associated_user
                                    pubkey: >-
                                      7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                    isSigner: false
                                    isWritable: true
                                  - name: user
                                    pubkey: >-
                                      BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                    isSigner: true
                                    isWritable: true
                                  - name: system_program
                                    pubkey: '11111111111111111111111111111111'
                                    isSigner: false
                                    isWritable: false
                                  - name: token_program
                                    pubkey: >-
                                      TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
                                    isSigner: false
                                    isWritable: false
                                  - name: creator_vault
                                    pubkey: >-
                                      HTGkqssCRhyE6rCBDDKQVqTM5LcFPwH8r7rmoMuvtKCD
                                    isSigner: false
                                    isWritable: true
                                  - name: event_authority
                                    pubkey: >-
                                      Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1
                                    isSigner: false
                                    isWritable: false
                                  - name: program
                                    pubkey: >-
                                      6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                                    isSigner: false
                                    isWritable: false
                                  - name: global_volume_accumulator
                                    pubkey: >-
                                      Hq2wp8uJ9jCPsYgNHex8RtqdvMPfVGoYwjvF1ATiwn2Y
                                    isSigner: false
                                    isWritable: false
                                  - name: user_volume_accumulator
                                    pubkey: >-
                                      FGFrX2q1iAjyAojjeyFDxXqdmvegjPpSWsrPmrJjeQ2f
                                    isSigner: false
                                    isWritable: true
                                  - name: fee_config
                                    pubkey: >-
                                      8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt
                                    isSigner: false
                                    isWritable: false
                                  - name: fee_program
                                    pubkey: >-
                                      pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
                                    isSigner: false
                                    isWritable: false
                                  - name: remainingAccount1
                                    pubkey: >-
                                      6MneqwSEV63Ujx1KZX8ZDs5freLUyo61DoSdEeQCjNjk
                                    isSigner: false
                                    isWritable: false
                                  - name: remainingAccount2
                                    pubkey: >-
                                      5YxQFdt3Tr9zJLvkFccqXVUwhdTWJQc1fFg2YPbxvxeD
                                    isSigner: false
                                    isWritable: false
                            - instructionIndex: 2
                              innerInstructionIndex: 1
                              stackHeight: 3
                              programId: pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
                              rawAccounts:
                                - 8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt
                                - 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                              rawData: >-
                                KX69VKtJ7u4E7dVvicNyuayxqa9Hr4EfndWiJBCjUyq1hDLtgcYW6pEh1tPqbHSkqHTQ8uiASv1QK1
                              summary: null
                              programName: pump_fees
                              instructionName: null
                              decoded: null
                            - instructionIndex: 2
                              innerInstructionIndex: 2
                              stackHeight: 3
                              programId: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
                              rawAccounts:
                                - 7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                - 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                - 7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                - 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                              rawData: jHqzogtBj1ey3
                              summary:
                                type: transfer
                                description: >-
                                  2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                  transferred 612181.177082
                                  3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                  from
                                  2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                  to
                                  BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                parsedData: null
                              programName: token_2022
                              instructionName: transfer_checked
                              decoded:
                                args:
                                  amount: '612181177082'
                                  decimals: 6
                                accounts:
                                  - name: source_account
                                    pubkey: >-
                                      7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                    isSigner: false
                                    isWritable: true
                                  - name: mint
                                    pubkey: >-
                                      3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                    isSigner: false
                                    isWritable: false
                                  - name: destination_account
                                    pubkey: >-
                                      7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                    isSigner: false
                                    isWritable: true
                                  - name: owner_or_delegate
                                    pubkey: >-
                                      2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                    isSigner: true
                                    isWritable: false
                            - instructionIndex: 2
                              innerInstructionIndex: 3
                              stackHeight: 3
                              programId: '11111111111111111111111111111111'
                              rawAccounts:
                                - BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                - 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                              rawData: 3Bxs4E6xqUKPTjRy
                              summary:
                                type: transfer
                                description: >-
                                  BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                  transferred 0.004207183 SOL to
                                  2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                parsedData: null
                              programName: system
                              instructionName: transfer
                              decoded:
                                args:
                                  lamports: '4207183'
                                accounts:
                                  - name: funding_account
                                    pubkey: >-
                                      BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                    isSigner: true
                                    isWritable: true
                                  - name: recipient_account
                                    pubkey: >-
                                      2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                    isSigner: false
                                    isWritable: true
                            - instructionIndex: 2
                              innerInstructionIndex: 4
                              stackHeight: 3
                              programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                              rawAccounts:
                                - Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1
                              rawData: >-
                                8jV3ThAnvn3jwQVVxYoxU8MvQQneX8ryEqnGqWTeKGi8UcTcTFd5VQ8KLpzRZhN2g6qpShcNYKQ6aEiZojgETaWrW1Mn92Drm2irNbjBdHGCTkuK3SBZb4HSn6KPZiJehmZL1aPNtVSRmGh2ojKXZLFtokDPK31XJJJZYBMowkVME4yWDsiA81AKAyJYq3afuYidCUgWsSfzSo8tZZRtCpSaeUd3M5JeyiE9V45vsDuPYsyBxmVFWf3qKWEcQuCDYu5HctwzvAeqU6Hmr1st5Kd62GrbHxua73RLuXpHotAjm3wYD6BkKEtKDpSnq47ewySqeUgF8MrTc121NwjKhedGJfp1VWv4TULoKaNTuA9KRzYVsTNgjYuwSgiXxQF2F1ePSHexBQdTiMbL1STcahdzuLvZoRkEUQX1WE9ayykQ1uiJ1FPFNCitKm6YwpLLLVwDDi8Rf2J5aeHxtLorKV5UWn1CnRukDpSJxAC91mmc6qNcJ6XQW5VxJMdhJcSSmSr1hi4dUt1vW6gspsMxEMUzGtiyBZeo
                              summary: null
                              programName: pump
                              instructionName: TradeEvent
                              decoded:
                                args:
                                  buyback_fee: '0'
                                  buyback_fee_basis_points: '0'
                                  cashback: '0'
                                  cashback_fee_basis_points: '0'
                                  creator: 2G5ZssGjViBdr4DdwYaQ23JQeNG8TRsrnHKs9pabUoCz
                                  creator_fee: '0'
                                  creator_fee_basis_points: '0'
                                  current_sol_volume: '0'
                                  fee: '0'
                                  fee_basis_points: '0'
                                  fee_recipient: GesfTA3X2arioaHp8bbKdjG9vJtskViWACZoYvxp4twS
                                  holder_rewards: '0'
                                  holder_rewards_bps: '0'
                                  is_buy: true
                                  ix_name: buy
                                  last_update_timestamp: '0'
                                  mayhem_mode: true
                                  mint: 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                  quote_amount: '4207183'
                                  quote_mint: '11111111111111111111111111111111'
                                  real_quote_reserves: '27976582'
                                  real_sol_reserves: '27976582'
                                  real_token_reserves: '793353696151809'
                                  shareholders: []
                                  sol_amount: '4207183'
                                  timestamp: '1792848886'
                                  token_amount: '612181177082'
                                  total_claimed_tokens: '0'
                                  total_unclaimed_tokens: '0'
                                  track_volume: false
                                  user: BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                  virtual_quote_reserves: '8676477109'
                                  virtual_sol_reserves: '8676477109'
                                  virtual_token_reserves: '1073253696151809'
                                accounts: []
                            - instructionIndex: 2
                              innerInstructionIndex: 5
                              stackHeight: 2
                              programId: MAyhSmzXzV1pTf7LsNkrNwkWKTo4ougAJ1PPg47MD4e
                              rawAccounts:
                                - 8FoNgzmjuSmiy86EPCWxvv1q7oJSu2WGA7wPymwki2LJ
                              rawData: >-
                                HaAvdxyruSvtMDoMtGvePmYV4dda7tWKCLFHadQoSjYsbWWixs1eN1wCF27wUxZao1NfTPQGxhVs9GXmaVGUZ5mgBAEUUWKK4se3JtE5oKMHzxp6GRbR7wagdMtwKQEaJbXuMb9c75n3gPnTTFrxTjJrtBCejTAEQpd6mv9HUaxpt2u83Cts4WgXdvWqiHqk7xXkXQwV6M1VXmAfwZYg4CSjzAmooqqAdzbHuf243dbws8uDS4GrteXQiAYow3395wuNqLWzrcHropQTzvaDtpfAupYXEt2AZHPEuUsVhtt5n8xAieU5d4oHSjAvgBczW9cktco7Wto3kEo53QaJfbdEz4V9Jnx6ib2fdvW2EpLXUprJLcP9voTKAuuCZCTbQKSbwJWRG9UCPTssTDR3m9eE38WcqtK1v2jeRtbtK
                              summary: null
                              programName: null
                              instructionName: null
                              decoded: null
                    paginationToken: '460869102:203'
                    scan:
                      stoppedOn: limit
                      scannedTransactions: 1
                      matchedTransactions: 1
                      scannedThrough:
                        slot: 460869102
                        blockTime: 1792848886
                      creditsCharged: 11
                Stopped on budget, no matches:
                  value:
                    data: []
                    paginationToken: '460903064:422'
                    scan:
                      stoppedOn: budget
                      scannedTransactions: 2000
                      matchedTransactions: 0
                      scannedThrough:
                        slot: 460903064
                        blockTime: 1792856105
                      creditsCharged: 12
                Count shape:
                  value:
                    paginationToken: '460903064:422'
                    scan:
                      stoppedOn: budget
                      scannedTransactions: 2000
                      matchedTransactions: 0
                      scannedThrough:
                        slot: 460903064
                        blockTime: 1792856105
                      creditsCharged: 12
        '400':
          description: Invalid request. The `error` message names the problem.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                default:
                  value:
                    error: >-
                      match.programs instructions not found in the IDLs of
                      6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P: not_a_real_ix
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          description: >-
            The service is at capacity, or the first history page did not
            complete before the request deadline. Retry the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                default:
                  value:
                    error: service unavailable
components:
  schemas:
    ScanRequest:
      type: object
      description: >-
        Request body for scanning an address's history for matching
        transactions.
      required:
        - address
        - match
      additionalProperties: false
      properties:
        address:
          type: string
          description: Address whose history is scanned.
        match:
          $ref: '#/components/schemas/ScanMatch'
        returnShape:
          type: string
          description: >-
            What the response carries for the matches: `transactions` (parsed
            matches in `data`, up to `limit`), `signatures` (`signature`,
            `slot`, `transactionIndex`, and `blockTime` per match in `data`), or
            `count` (no `data`; `scan.matchedTransactions` is the number of
            matches). `signatures` and `count` ignore `limit` and
            `rawTransaction`.
          enum:
            - transactions
            - signatures
            - count
          default: transactions
        limit:
          type: integer
          description: Most matches to return with the `transactions` shape, from 1 to 100.
          minimum: 1
          maximum: 100
          default: 100
        budget:
          $ref: '#/components/schemas/ScanBudget'
        beforeSignature:
          type: string
          description: Scan transactions before this signature.
        afterSignature:
          type: string
          description: Scan transactions after this signature.
        paginationToken:
          type: string
          description: >-
            Cursor returned by a previous scan. Shape is
            `slot:transactionIndex`.
        sortOrder:
          type: string
          description: Order in which history is scanned and matches are returned.
          enum:
            - asc
            - desc
          default: desc
        commitment:
          type: string
          description: >-
            Commitment level used for the history fetch. `processed` is not
            supported.
          enum:
            - confirmed
            - finalized
          default: confirmed
        status:
          type: string
          description: >-
            Execution result to include. Filtering happens before matching, so
            excluded transactions do not count toward the budget.
          enum:
            - succeeded
            - failed
            - any
          default: succeeded
        tokenAccounts:
          allOf:
            - $ref: '#/components/schemas/TokenAccountsFilter'
          description: >-
            Whether to include transactions that reference only a token account
            owned by `address`, not `address` itself: `none` leaves them out,
            `balanceChanged` includes those that change the token account's
            balance, and `all` includes all of them. Use `balanceChanged` when
            you scan a wallet by mint.
        minContextSlot:
          type: integer
          description: Minimum slot at which the request can be evaluated.
        rawTransaction:
          allOf:
            - $ref: '#/components/schemas/RawTransactionEncoding'
          description: >-
            Encoding of the original Solana transaction returned as
            `rawTransaction` on each successful result, in the `getTransaction`
            shape. Applies to the `transactions` shape only.
        slot:
          allOf:
            - $ref: '#/components/schemas/ComparisonBounds'
          description: Slot comparison bounds. Each bound is optional.
        time:
          allOf:
            - $ref: '#/components/schemas/ComparisonBounds'
          description: >-
            Block-time comparison bounds in Unix seconds. Each bound is
            optional.
    ScanPage:
      type: object
      description: The matches in the requested `returnShape` and a summary of the scan.
      properties:
        data:
          description: >-
            The matches, in `sortOrder`. With `transactions`, each item has the
            same `TransactionResult` shape returned by
            `/v1/parsed-events/transactions`; with `signatures`, each item is a
            `ScanSignature`. Missing with `count`. Can be empty when
            `paginationToken` is present.
          oneOf:
            - type: array
              title: Transactions
              items:
                $ref: '#/components/schemas/TransactionResult'
            - type: array
              title: Signatures
              items:
                $ref: '#/components/schemas/ScanSignature'
        paginationToken:
          type: string
          description: >-
            Cursor where the next scan continues. Missing when the scan reached
            the end of the history or window.
        scan:
          $ref: '#/components/schemas/ScanSummary'
    ErrorResponse:
      type: object
      description: Request-level error response.
      properties:
        error:
          type: string
          description: Error message.
    ScanMatch:
      type: object
      description: >-
        What a transaction must match. Set `programs`, `mints`, or both. When
        both are set, a transaction must match both.
      additionalProperties: false
      properties:
        programs:
          type: array
          description: >-
            Programs to match, at most 20, each at most once. A transaction
            matches when it has an instruction of any of them, top-level or
            inner (CPI), within the program's `scope`.
          maxItems: 20
          items:
            $ref: '#/components/schemas/ScanProgramMatch'
        mints:
          type: array
          description: >-
            Mints to match, at most 20, each at most once. A transaction matches
            when one of its pre or post token balances is of one of these mints,
            within the mint's `scope`.
          maxItems: 20
          items:
            $ref: '#/components/schemas/ScanMintMatch'
    ScanBudget:
      type: object
      description: Limits on how much history one request scans.
      additionalProperties: false
      properties:
        maxScannedTransactions:
          type: integer
          description: Most transactions to scan in this request, from 1 to 10,000.
          minimum: 1
          maximum: 10000
          default: 10000
    TokenAccountsFilter:
      type: string
      description: >-
        Whether to include transactions that reference only a token account
        owned by `address`, not `address` itself: `none` leaves them out,
        `balanceChanged` includes those that change the token account's balance,
        and `all` includes all of them.
      enum:
        - none
        - balanceChanged
        - all
      default: none
    RawTransactionEncoding:
      type: string
      description: >-
        Encoding of the original Solana transaction returned as `rawTransaction`
        on each successful result, in the `getTransaction` shape. `none` returns
        no raw transaction.
      enum:
        - none
        - json
        - jsonParsed
        - base64
      default: none
    ComparisonBounds:
      type: object
      description: Numeric comparison bounds. Each field is optional.
      additionalProperties: false
      properties:
        gt:
          type: integer
          description: Match values greater than this value.
        gte:
          type: integer
          description: Match values greater than or equal to this value.
        lt:
          type: integer
          description: Match values less than this value.
        lte:
          type: integer
          description: Match values less than or equal to this value.
    TransactionResult:
      type: object
      description: Per-signature parser result.
      properties:
        signature:
          type: string
          description: Transaction signature for this item.
        parserStatus:
          type: string
          description: >-
            `OK` when parsing succeeded, or `ERROR` when the item failed to
            fetch or parse.
          enum:
            - OK
            - ERROR
        parsed:
          allOf:
            - $ref: '#/components/schemas/ParsedTransaction'
          description: Parsed transaction object. Present when `parserStatus` is `OK`.
        parserError:
          allOf:
            - $ref: '#/components/schemas/ParserError'
          description: Item-level error. Present when `parserStatus` is `ERROR`.
        rawTransaction:
          type: object
          description: >-
            Original Solana transaction in the `getTransaction` shape for the
            requested `rawTransaction` encoding. With `base64`, `transaction` is
            `[data, "base64"]`. Present only when a raw transaction is
            requested.
          additionalProperties: true
    ScanSignature:
      type: object
      description: A match returned with `returnShape` set to `signatures`.
      properties:
        signature:
          type: string
          description: Transaction signature.
        slot:
          type: integer
          description: Slot containing the transaction.
        transactionIndex:
          type: integer
          description: Position of the transaction within its slot.
        blockTime:
          type: integer
          nullable: true
          description: Block time in Unix seconds, when available.
    ScanSummary:
      type: object
      description: How far the scan got and why it stopped.
      properties:
        stoppedOn:
          type: string
          description: >-
            Why the scan stopped: `windowEnd` (end of the history or window),
            `limit` (returned `limit` matches), `budget` (scanned
            `maxScannedTransactions`), or `deadline` (reached the request time
            limit).
          enum:
            - windowEnd
            - limit
            - budget
            - deadline
        scannedTransactions:
          type: integer
          description: Transactions scanned in this request.
        matchedTransactions:
          type: integer
          description: >-
            Matches found in this request. With `returnShape` set to `count`,
            this is the result.
        scannedThrough:
          allOf:
            - $ref: '#/components/schemas/ScannedThrough'
          description: The last transaction scanned. Missing when nothing was scanned.
        creditsCharged:
          type: integer
          description: >-
            Credits charged: 10 per request plus 1 per history page scanned (up
            to 1,000 transactions each).
    ScanProgramMatch:
      type: object
      description: >-
        Matches transactions with an instruction of `programId`, top-level or
        inner (CPI). Set `instructions`, `discriminators`, or both to narrow the
        match, or neither to match any instruction of the program.
      required:
        - programId
      additionalProperties: false
      properties:
        programId:
          type: string
          description: Program address.
        instructions:
          type: array
          description: >-
            Instruction names from any IDL version of the program, as the IDL
            spells them or in snake_case. At most 50. Can be combined with
            `discriminators`.
          maxItems: 50
          items:
            type: string
        discriminators:
          type: array
          description: >-
            Instruction data prefixes, each 1 to 8 hex-encoded bytes with an
            optional `0x` prefix. At most 50. Can be combined with
            `instructions`.
          maxItems: 50
          items:
            type: string
        scope:
          allOf:
            - $ref: '#/components/schemas/MatchScope'
          description: >-
            Which of the program's instructions count. `address` counts only
            instructions with an account that is `address`, a token account
            `address` owns, or a token account whose mint is `address`, or every
            instruction when `address` is the program. `transaction` counts any
            instruction of the program in the transaction.
    ScanMintMatch:
      type: object
      description: >-
        Matches transactions with a pre or post token balance of `mint`, within
        `scope`. The native SOL mint
        `So11111111111111111111111111111111111111111` matches on lamport changes
        instead, not counting the fee charged to the fee payer.
      required:
        - mint
      additionalProperties: false
      properties:
        mint:
          type: string
          description: >-
            Token mint address. The native SOL mint
            `So11111111111111111111111111111111111111111` matches on lamport
            changes instead of token balances, not counting the fee.
        scope:
          allOf:
            - $ref: '#/components/schemas/MatchScope'
          description: >-
            Which of the mint's token balances count. `address` counts only
            balances whose token account is `address` or is owned by it, or
            whose mint is `address`. For native SOL, only changes to `address`'s
            lamports count. `transaction` counts any balance of the mint in the
            transaction. For native SOL, a change to any account's lamports
            counts.
    ParsedTransaction:
      type: object
      description: Parser-v2 transaction model.
      properties:
        slot:
          type: integer
          description: Slot containing the transaction.
        blockTime:
          type: integer
          description: Unix timestamp for the block, when available.
          nullable: true
        fee:
          type: integer
          description: Transaction fee in lamports.
        feePayer:
          type: string
          description: Fee payer account, when available.
          nullable: true
        transactionStatus:
          type: string
          description: >-
            `OK` when the transaction executed successfully, or `ERROR` when
            execution failed.
          enum:
            - OK
            - ERROR
        nativeTransfers:
          type: array
          description: Transaction-level SOL transfers in lamports.
          items:
            $ref: '#/components/schemas/NativeTransfer'
        tokenTransfers:
          type: array
          description: Transaction-level SPL Token and Token-2022 transfers.
          items:
            $ref: '#/components/schemas/TokenTransfer'
        summary:
          allOf:
            - $ref: '#/components/schemas/ParsedSummary'
          description: Best transaction-level summary, when available.
          nullable: true
        instructions:
          type: array
          description: Parsed top-level and inner instructions in execution order.
          items:
            $ref: '#/components/schemas/ParsedInstruction'
    ParserError:
      type: object
      description: Item-level parser error.
      properties:
        code:
          type: string
          description: Machine-readable parser error code.
        message:
          type: string
          description: Human-readable parser error message.
    ScannedThrough:
      type: object
      description: Position of the last transaction scanned.
      properties:
        slot:
          type: integer
          description: Slot of the last transaction scanned.
        blockTime:
          type: integer
          nullable: true
          description: Block time of the last transaction scanned, in Unix seconds.
    MatchScope:
      type: string
      description: >-
        Where a program's instructions or a mint's token balances must be to
        count.
      enum:
        - address
        - transaction
      default: address
    NativeTransfer:
      type: object
      description: SOL movement detected at transaction level.
      properties:
        fromUserAccount:
          type: string
          description: Account sending lamports.
          nullable: true
        toUserAccount:
          type: string
          description: Account receiving lamports.
          nullable: true
        amount:
          type: integer
          description: Amount in lamports.
    TokenTransfer:
      type: object
      description: SPL Token or Token-2022 movement detected at transaction level.
      properties:
        fromUserAccount:
          type: string
          description: Owner or authority for the source side, when known.
          nullable: true
        toUserAccount:
          type: string
          description: Owner for the destination side, when known.
          nullable: true
        fromTokenAccount:
          type: string
          description: Source token account.
          nullable: true
        toTokenAccount:
          type: string
          description: Destination token account.
          nullable: true
        rawTokenAmount:
          type: integer
          description: Raw integer token amount.
        decimals:
          type: integer
          description: Mint decimals used to interpret the raw amount.
        tokenStandard:
          type: string
          description: Token standard when known, such as `Fungible` or `UnknownStandard`.
        mint:
          type: string
          description: Token mint address.
    ParsedSummary:
      type: object
      description: Human-readable summary for a transaction or instruction.
      properties:
        type:
          type: string
          description: Summary type, such as `swap`, `transfer`, or `create_account`.
        description:
          type: string
          description: Human-readable summary text.
        parsedData:
          type: object
          description: >-
            Structured payload behind the summary, when available — for example
            swap metadata with `protocol`, `kind`, amounts, and mints. The shape
            varies by summary type and protocol.
          nullable: true
          additionalProperties: true
    ParsedInstruction:
      type: object
      description: Parsed top-level or inner instruction.
      properties:
        instructionIndex:
          type: integer
          description: Top-level instruction index.
        innerInstructionIndex:
          type: integer
          description: >-
            Inner instruction index within the top-level instruction, when
            applicable.
          nullable: true
        stackHeight:
          type: integer
          description: Stack height when available.
          nullable: true
        programId:
          type: string
          description: Program ID that executed the instruction.
        rawAccounts:
          type: array
          description: Raw account pubkeys resolved from instruction account indexes.
          items:
            type: string
        rawData:
          type: string
          description: Raw instruction data.
        summary:
          allOf:
            - $ref: '#/components/schemas/ParsedSummary'
          description: Instruction-level summary, when available.
          nullable: true
        programName:
          type: string
          description: Parser-known program name, when available.
          nullable: true
        instructionName:
          type: string
          description: Decoded instruction name, when available.
          nullable: true
        decoded:
          allOf:
            - $ref: '#/components/schemas/DecodedInstruction'
          description: Decoded args and accounts, when decoding succeeds.
          nullable: true
    DecodedInstruction:
      type: object
      description: Decoded instruction args and named accounts.
      properties:
        args:
          type: object
          description: >-
            Decoded instruction arguments. Argument names and shapes depend on
            the instruction.
          additionalProperties: true
        accounts:
          type: array
          description: Decoded instruction accounts with parser-known names.
          items:
            $ref: '#/components/schemas/DecodedAccount'
    DecodedAccount:
      type: object
      description: Named account used by a decoded instruction.
      properties:
        name:
          type: string
          description: Parser-known account name.
        pubkey:
          type: string
          description: Account public key.
        isSigner:
          type: boolean
          description: Whether the account signed the transaction.
        isWritable:
          type: boolean
          description: Whether the account was writable for the instruction.
  responses:
    InternalError:
      description: >-
        The request failed on the server, for example because a stored
        transaction in the requested range could not be decoded. The whole
        request fails; no partial results are returned.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            default:
              value:
                error: internal server error
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key

````

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