> ## 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.

# Transaktionsverlauf durchsuchen

> Durchsuche den Verlauf einer Adresse serverseitig nach Transaktionen, die Programmanweisungen aufrufen oder Token-Mints betreffen. Gib die geparsten Treffer, ihre Signaturen oder eine Anzahl zurück.

Request-Body, response-Schema und Beispiele auf dieser Seite werden aus der OpenAPI-Definition generiert.

Scan durchsucht den Verlauf einer Adresse, behält die Transaktionen, die deinen Kriterien in `match` entsprechen, und parst nur diese. Verwende Scan, statt den [geparsten Transaktionsverlauf](https://www.helius.dev/docs/de/api-reference/parsed-events/transaction-history.md) seitenweise abzurufen und clientseitig zu filtern.

Standardmäßig verwendet jedes Element in `data` dieselbe `TransactionResult`-Struktur, die [Transaktionen parsen](https://www.helius.dev/docs/de/api-reference/parsed-events/transactions.md) zurückgibt. Setze `returnShape`, um nur die übereinstimmenden Signaturen oder nur eine Anzahl zu erhalten. Die response enthält außerdem eine `scan`-Zusammenfassung. Sie zeigt dir, wie weit der Scan gekommen ist und warum er beendet wurde.

## So funktioniert Scan

1. Scan ruft den Verlauf der Adresse in Seiten mit bis zu 1.000 Transaktionen ab. Dabei gelten `sortOrder` sowie die von dir festgelegten Grenzen für `slot`, `time` und Signaturen.
2. Scan behält die Transaktionen, die allen in `match` festgelegten Kriterien entsprechen.
3. Scan stoppt beim ersten dieser Ereignisse: `limit` Treffer gefunden (nur bei der standardmäßigen `transactions`-Struktur), `budget.maxScannedTransactions` gescannt, Ende des Verlaufs oder Zeitfensters erreicht oder Zeitlimit des request erreicht.

Ein vorzeitig beendeter Scan ist dennoch ein `200`. Rufe ihn erneut mit dem zurückgegebenen `paginationToken` auf, solange eines vorhanden ist. Das gilt auch, wenn `data` leer ist.

## Trefferkriterien

`match` ist erforderlich. Lege `programs`, `mints` oder beides fest. Wenn du beides festlegst, muss eine Transaktion beiden Kriterien entsprechen.

### Nach Programm abgleichen

`programs` listet bis zu 20 Programme auf, jedes höchstens einmal. Eine Transaktion stimmt überein, wenn sie eine Anweisung eines dieser Programme enthält, entweder auf oberster Ebene oder intern (CPI), und diese im `scope` des Programms liegt.

Du kannst den Treffer für jedes Programm eingrenzen:

* `instructions`: Anweisungsnamen aus einer beliebigen IDL-Version des Programms, wie sie in der IDL geschrieben sind oder in snake\_case. Wenn ein Name in den IDLs des Programms nicht gefunden wird, wird `400` zurückgegeben.
* `discriminators`: Präfixe der Anweisungsdaten mit jeweils 1 bis 8 hexadezimal codierten Bytes und einem optionalen `0x`-Präfix. Verwende sie für Programme ohne IDL.
* Lege eine oder beide Listen fest. Bei beiden stimmt eine Anweisung überein, wenn sie eine der benannten Anweisungen ist oder ihre Daten mit einem der Diskriminatoren beginnen. Lasse beide weg, um jede Anweisung des Programms abzugleichen.
* Jede Liste akzeptiert höchstens 50 Einträge pro Programm.

Verwende die Methode [`describeProgram`](https://www.helius.dev/docs/de/parsed-streams/quickstart#ermittlung) von Parsed Streams, um die Namen der decodierten Anweisungen eines Programms zu prüfen.

### Nach Mint abgleichen

`mints` listet bis zu 20 Objekte der Form `{ "mint": "...", "scope": "address" }` auf, jede Mint höchstens einmal. Eine Transaktion stimmt überein, wenn einer ihrer Token-Salden vor oder nach der Transaktion zu einer dieser Mints gehört und im `scope` der Mint liegt.

Wenn du eine Wallet nach einer Mint durchsuchst, setze `tokenAccounts` auf `balanceChanged`. Standardmäßig lässt der Verlauf Transaktionen aus, die nur die Token-Konten der Wallet und nicht die Wallet selbst betreffen. Dazu gehören viele eingehende Token-Übertragungen.

### Nativen SOL abgleichen

Nativer SOL hat keine Token-Salden. Deshalb gleicht Scan ihn anhand von Lamports ab. Verwende die native SOL-Mint `So11111111111111111111111111111111111111111` (Wrapped SOL ist `So11111111111111111111111111111111111111112`):

* Beim `address`-Bereich stimmt eine Transaktion überein, wenn sich die Lamports der gescannten Adresse geändert haben.
* Beim `transaction`-Bereich stimmt sie überein, wenn sich die Lamports eines beliebigen Kontos geändert haben.

Die dem Gebührenzahler berechnete Gebühr zählt nicht. Jedes Konto wird einzeln verglichen. Lamports, die ein Konto verlassen und in derselben Transaktion zurückkehren, zählen daher nicht. Der Abgleich von nativem SOL erfasst SOL, den ein Programm ohne Übertragungsanweisung auszahlt, etwa bei einem Verkauf auf Pump.fun. Er erfasst auch beiläufige Bewegungen wie Jito-Trinkgelder und Mieten, die für Konten gezahlt oder von ihnen erstattet werden.

### Abgleichbereich

Jedes Programm und jede Mint verwendet einen `scope`:

| `scope` | Die Anweisung eines Programms zählt, wenn | Der Token-Saldo einer Mint zählt, wenn |
| - | - | - |
| `address` (Standard) | Eines ihrer Konten ist `address`, ein Token-Konto gehört `address`, die Mint eines Token-Kontos ist `address` oder `address` ist das Programm selbst. | Sein Token-Konto ist `address` oder gehört `address`, oder seine Mint ist `address`. |
| `transaction` | Sie erscheint an einer beliebigen Stelle in der Transaktion. | Er erscheint an einer beliebigen Stelle in der Transaktion. |

Verwende den `transaction`-Bereich, wenn die gescannte Adresse in der Transaktion vorkommt, aber nicht in der Anweisung oder dem Saldo, die du abgleichst. Die Adresse bezahlt beispielsweise nur die Gebühr, führt eine Multisig-Transaktion aus oder fehlt in einem Anchor-Event-CPI. Wenn du die Mint eines Tokens nach Transaktionen durchsuchst, die auch USDC enthalten, benötigt der USDC-Eintrag den `transaction`-Bereich.

Der Besitz eines Token-Kontos ergibt sich aus `owner`, das für jeden Token-Saldo gespeichert ist. Ältere Transaktionen ohne diese Angabe stimmen im `address`-Bereich nur mit `address` selbst überein.

## Rückgabeformate

`returnShape` legt fest, was die response für die Treffer enthält:

| `returnShape` | `data` | Verwendung |
| - | - | - |
| `transactions` (Standard) | Geparste Treffer, bis zu `limit`. | Decodierte Anweisungen, Übertragungen und Zusammenfassungen lesen. |
| `signatures` | Ein `{ signature, slot, transactionIndex, blockTime }`-Objekt pro Treffer. | Übereinstimmende Signaturen sammeln, ohne sie zu parsen. |
| `count` | Ausgelassen. `scan.matchedTransactions` ist die Anzahl der Treffer. | Treffer in einem Bereich zählen. |

`signatures` und `count` ignorieren `limit` und `rawTransaction`. Sie geben jeden Treffer in dem Bereich zurück, den ein request scannt. Daher stoppen sie nur bei `windowEnd`, `budget` oder `deadline`. Um einen gesamten Verlauf zu zählen, rufe Scan weiter mit `paginationToken` auf und addiere `scan.matchedTransactions`.

Jedes Element in `data` mit `returnShape: "signatures"` sieht so aus:

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

Alle drei Formate kosten gleich viel, da die Credits von den gescannten Verlaufsseiten und nicht von den zurückgegebenen Daten abhängen.

## Beispiel-Requests

### Käufe und Verkäufe auf Pump.fun

Durchsuche den Verlauf des Pump.fun-Programms nach den Anweisungen `buy` und `sell`:

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

Pump.fun hat auch Varianten wie `buy_exact_sol_in`, `buy_v2` und `sell_v2`. Liste alle Anweisungsnamen auf, die du abgleichen möchtest.

### Käufe und Verkäufe eines Tokens

Um die Pump.fun-Handelstransaktionen eines Tokens abzurufen, durchsuche statt der Programmadresse die Mint-Adresse des Tokens. Der Verlauf der Mint enthält nur die Aktivität dieses Tokens. Jede Kauf- oder Verkaufsanweisung listet die Mint als Konto auf und stimmt daher mit dem standardmäßigen `address`-Bereich überein:

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

Um nur die Transaktionen des Tokens zu behalten, die auch ein USDC-Token-Konto betreffen, füge USDC mit dem `transaction`-Bereich hinzu. Beim standardmäßigen `address`-Bereich müsste ein USDC-Saldo zur Mint-Adresse gehören. Daher würde nichts übereinstimmen:

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

### Handelstransaktionen einer Wallet über zwei Programme

Liste mehrere Programme auf, um einen Aufruf eines beliebigen dieser Programme abzugleichen. Dieser request gibt die Pump.fun- und PumpSwap-Handelstransaktionen einer Wallet nur als Signaturen zurück:

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

### USDC-Aktivität einer Wallet in einem Zeitraum

Durchsuche den Verlauf einer Wallet nach Transaktionen, die 2025 USDC betrafen. `tokenAccounts: "balanceChanged"` schließt Übertragungen ein, die nur das USDC-Token-Konto der Wallet betrafen:

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

Füge `"returnShape": "count"` hinzu, um nur die Anzahl der übereinstimmenden Transaktionen zu erhalten.

### SOL-Bewegungen einer Wallet

Durchsuche eine Wallet nach Transaktionen, die 2025 ihren SOL-Saldo über die bezahlte Gebühr hinaus geändert haben. Dazu gehört SOL, den ein Programm ohne Übertragungsanweisung ausgezahlt hat:

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

## Paginierung und Stoppgründe

`scan.stoppedOn` zeigt dir, warum der request beendet wurde:

| `stoppedOn` | Bedeutung | `paginationToken` |
| - | - | - |
| `windowEnd` | Das Ende des Verlaufs oder des angeforderten Zeitfensters wurde erreicht. | Fehlt. Der Scan ist abgeschlossen. |
| `limit` | `limit` Treffer wurden zurückgegeben. Nur mit der standardmäßigen `transactions`-Struktur. | Wird direkt nach dem letzten zurückgegebenen Treffer fortgesetzt, sodass kein Treffer übersprungen wird. |
| `budget` | `budget.maxScannedTransactions` Transaktionen wurden gescannt. | Wird bei der nächsten Verlaufsseite fortgesetzt. |
| `deadline` | Das Zeitlimit des request wurde erreicht. | Wird bei der nächsten Verlaufsseite fortgesetzt. Eine wegen der Frist abgebrochene Seite wird beim nächsten Aufruf erneut abgerufen. |

`scan.scannedThrough` enthält den slot und die Blockzeit der zuletzt gescannten Transaktion. So kannst du den Fortschritt bei langen Verläufen melden.

Ein Scan nach einer seltenen Anweisung kann sein Budget aufbrauchen, ohne einen Treffer zu finden. Die response enthält dann ein leeres `data`-Array und gibt trotzdem ein `paginationToken` zurück. Scanne daher weiter:

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

Diese Schleife scannt weiter, bis der Verlauf vollständig durchsucht ist:

```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]
>
> Scanne die spezifischste mögliche Adresse. Jede Transaktion im Verlauf der Adresse zählt zum Budget. Je weniger irrelevante Transaktionen eine Adresse enthält, desto mehr Treffer findet jeder request.

## Credits

Jeder Scan kostet **10 Credits plus 1 Credit pro gescannter Verlaufsseite**. Eine Seite enthält bis zu 1.000 Transaktionen. Ein Scan mit dem Standardbudget von 10.000 Transaktionen kostet daher höchstens 20 Credits. Eine wegen der Frist abgebrochene Seite wird weder gescannt noch berechnet.

Jede response gibt die Kosten in `scan.creditsCharged` an. Unter [Credits](https://www.helius.dev/docs/de/billing/credits.md) findest du die Preise der Tarife.

## Fehler

| Status | Wann |
| - | - |
| `400` | Der Body ist ungültig oder enthält unbekannte Felder; `match` legt weder `programs` noch `mints` fest; ein Programm oder eine Mint ist mehrfach aufgeführt; eine Adresse oder Mint ist ungültig; ein Anweisungsname ist nicht in den IDLs des Programms enthalten; eine Liste überschreitet ihr Limit; `scope`, `returnShape`, `rawTransaction` oder `tokenAccounts` hat einen unbekannten Wert; `limit` liegt bei der `transactions`-Struktur außerhalb des Bereichs 1 bis 100; oder `budget.maxScannedTransactions` liegt außerhalb des Bereichs 1 bis 10.000. |
| `500` | Der request ist auf dem Server fehlgeschlagen, etwa weil eine gespeicherte Transaktion im gescannten Bereich nicht decodiert werden konnte. Es werden keine Teilergebnisse zurückgegeben. |
| `503` | Der Dienst ist ausgelastet oder die erste Verlaufsseite wurde nicht vor Ablauf des Zeitlimits des request abgeschlossen. Wiederhole den request. |

Fehler auf request-Ebene geben einen JSON-Body mit einer `error`-Meldung zurück, etwa `{"error": "limit must be between 1 and 100"}`. Ein Body mit einem unbekannten Feld wie `includeRawTransaction` (verwende `rawTransaction`) oder mit `mints` als einfache Strings statt `{ "mint": "..." }`-Objekten gibt `{"error": "invalid request payload"}` zurück.

## Request-Parameter

**address** `string` *required*

Adresse, deren Verlauf gescannt wird.

**match** `object` *required*

Kriterien, denen eine Transaktion entsprechen muss. Lege `programs`, `mints` oder beides fest. Wenn du beides festlegst, muss eine Transaktion beiden Kriterien entsprechen.

**match.programs** `array`

Abzugleichende Programme, höchstens 20 und jedes höchstens einmal. Eine Transaktion stimmt überein, wenn sie eine Anweisung eines dieser Programme enthält, entweder auf oberster Ebene oder intern (CPI), und diese im `scope` des Programms liegt.

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

Programmadresse.

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

Anweisungsnamen aus einer beliebigen IDL-Version des Programms, wie sie in der IDL geschrieben sind oder in snake\_case. Höchstens 50. Kann mit `discriminators` kombiniert werden.

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

Präfixe der Anweisungsdaten mit jeweils 1 bis 8 hexadezimal codierten Bytes und einem optionalen `0x`-Präfix. Höchstens 50. Kann mit `instructions` kombiniert werden.

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

Legt fest, welche Anweisungen des Programms zählen. `address` zählt nur Anweisungen mit einem Konto, das `address` ist, einem Token-Konto, das `address` gehört, oder einem Token-Konto, dessen Mint `address` ist. Wenn `address` das Programm ist, zählt jede Anweisung. `transaction` zählt jede Anweisung des Programms in der Transaktion.

* `address`
* `transaction`

**match.mints** `array`

Abzugleichende Mints, höchstens 20 und jede höchstens einmal. Eine Transaktion stimmt überein, wenn einer ihrer Token-Salden vor oder nach der Transaktion zu einer dieser Mints gehört und im `scope` der Mint liegt.

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

Token-Mint-Adresse. Die native SOL-Mint `So11111111111111111111111111111111111111111` gleicht statt Token-Salden Änderungen an Lamports ab. Die Gebühr zählt nicht.

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

Legt fest, welche Token-Salden der Mint zählen. `address` zählt nur Salden, deren Token-Konto `address` ist oder dieser Adresse gehört, oder deren Mint `address` ist. Bei nativem SOL zählen nur Änderungen an den Lamports von `address`. `transaction` zählt jeden Saldo der Mint in der Transaktion. Bei nativem SOL zählt eine Änderung an den Lamports eines beliebigen Kontos.

* `address`
* `transaction`

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

Legt fest, was die response für die Treffer enthält: `transactions` (geparste Treffer in `data`, bis zu `limit`), `signatures` (`signature`, `slot`, `transactionIndex` und `blockTime` pro Treffer in `data`) oder `count` (kein `data`; `scan.matchedTransactions` ist die Anzahl der Treffer). `signatures` und `count` ignorieren `limit` und `rawTransaction`.

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

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

Maximale Anzahl der Treffer, die mit der `transactions`-Struktur zurückgegeben werden. Zulässig sind 1 bis 100.

**budget** `object`

Begrenzt, wie viel Verlauf ein request scannt.

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

Maximale Anzahl der Transaktionen, die in diesem request gescannt werden. Zulässig sind 1 bis 10.000.

**beforeSignature** `string`

Scannt Transaktionen vor dieser Signatur.

**afterSignature** `string`

Scannt Transaktionen nach dieser Signatur.

**paginationToken** `string`

Cursor, den ein vorheriger Scan zurückgegeben hat. Die Struktur ist `slot:transactionIndex`.

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

Reihenfolge, in der der Verlauf gescannt und Treffer zurückgegeben werden.

* `asc`
* `desc`

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

Commitment-Stufe für den Abruf des Verlaufs. `processed` wird nicht unterstützt.

* `confirmed`
* `finalized`

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

Einzuschließendes Ausführungsergebnis. Die Filterung erfolgt vor dem Abgleich. Ausgeschlossene Transaktionen zählen daher nicht zum Budget.

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

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

Legt fest, ob Transaktionen eingeschlossen werden, die nur auf ein Token-Konto verweisen, das `address` gehört, aber nicht auf `address` selbst: `none` lässt sie aus, `balanceChanged` schließt diejenigen ein, die den Saldo des Token-Kontos ändern, und `all` schließt alle ein. Verwende `balanceChanged`, wenn du eine Wallet nach einer Mint durchsuchst.

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

**minContextSlot** `number`

Minimaler slot, bei dem der request ausgewertet werden kann.

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

Codierung der ursprünglichen Solana-Transaktion, die bei jedem erfolgreichen Ergebnis als `rawTransaction` in der `getTransaction`-Struktur zurückgegeben wird. Gilt nur für die `transactions`-Struktur.

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

**slot** `object`

Vergleichsgrenzen für den slot. Jede Grenze ist optional.

**slot.gt** `number`

Gleicht Werte ab, die größer als dieser Wert sind.

**slot.gte** `number`

Gleicht Werte ab, die größer oder gleich diesem Wert sind.

**slot.lt** `number`

Gleicht Werte ab, die kleiner als dieser Wert sind.

**slot.lte** `number`

Gleicht Werte ab, die kleiner oder gleich diesem Wert sind.

**time** `object`

Vergleichsgrenzen für die Blockzeit in Unix-Sekunden. Jede Grenze ist optional.

**time.gt** `number`

Gleicht Werte ab, die größer als dieser Wert sind.

**time.gte** `number`

Gleicht Werte ab, die größer oder gleich diesem Wert sind.

**time.lt** `number`

Gleicht Werte ab, die kleiner als dieser Wert sind.

**time.lte** `number`

Gleicht Werte ab, die kleiner oder gleich diesem Wert sind.


## OpenAPI

````yaml de/openapi/parsed-events.yaml POST /v1/parsed-events/scan
openapi: 3.0.3
info:
  title: Geparste Events
  version: 0.1.0
  description: >-
    Parse Solana-Transaktionen und den geparsten Transaktionsverlauf mit
    geparsten Events.
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/scan:
    post:
      tags:
        - Geparste Ereignisse
      summary: Transaktionsverlauf durchsuchen
      description: >-
        Durchsuche den Verlauf einer Adresse nach Transaktionen, die eines aus
        einer Gruppe von Programmen aufrufen, einen aus einer Gruppe von
        Token-Mints berühren oder beides. Gibt die geparsten Treffer, ihre
        Signaturen oder eine Anzahl zurück.
      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: >-
            Die Treffer im angeforderten `returnShape` und eine Zusammenfassung
            des Scans. Auch ein Teilergebnis erhält den Status 200. Fahre mit
            `paginationToken` fort, solange einer zurückgegeben wird.
          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
                              tauschte 0.004207183 SOL über Pump.fun gegen
                              612181.177082
                              3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                            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
                                  tauschte 0.004207183 SOL über Pump.fun gegen
                                  612181.177082
                                  3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                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
                                  übertrug 612181.177082
                                  3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                  von
                                  2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                  an
                                  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
                                  übertrug 0.004207183 SOL an
                                  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: Ungültiger request. Die `error`-Meldung nennt das 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: >-
            Der Dienst ist ausgelastet oder die erste Verlaufsseite wurde nicht
            vor Ablauf der request-Frist fertiggestellt. Wiederhole den request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                default:
                  value:
                    error: service unavailable
components:
  schemas:
    ScanRequest:
      type: object
      description: >-
        Request-Body zum Durchsuchen des Verlaufs einer Adresse nach passenden
        Transaktionen.
      required:
        - address
        - match
      additionalProperties: false
      properties:
        address:
          type: string
          description: Adresse, deren Verlauf durchsucht wird.
        match:
          $ref: '#/components/schemas/ScanMatch'
        returnShape:
          type: string
          description: >-
            Legt fest, was die response für die Treffer enthält: `transactions`
            (geparste Treffer in `data`, bis zu `limit`), `signatures`
            (`signature`, `slot`, `transactionIndex` und `blockTime` für jeden
            Treffer in `data`) oder `count` (kein `data`;
            `scan.matchedTransactions` ist die Anzahl der Treffer). `signatures`
            und `count` ignorieren `limit` und `rawTransaction`.
          enum:
            - transactions
            - signatures
            - count
          default: transactions
        limit:
          type: integer
          description: >-
            Maximale Anzahl der Treffer, die im `transactions`-Format
            zurückgegeben werden, von 1 bis 100.
          minimum: 1
          maximum: 100
          default: 100
        budget:
          $ref: '#/components/schemas/ScanBudget'
        beforeSignature:
          type: string
          description: Durchsuche Transaktionen vor dieser Signatur.
        afterSignature:
          type: string
          description: Durchsuche Transaktionen nach dieser Signatur.
        paginationToken:
          type: string
          description: >-
            Cursor, den ein vorheriger Scan zurückgegeben hat. Das Format ist
            `slot:transactionIndex`.
        sortOrder:
          type: string
          description: >-
            Reihenfolge, in der der Verlauf durchsucht und Treffer zurückgegeben
            werden.
          enum:
            - asc
            - desc
          default: desc
        commitment:
          type: string
          description: >-
            Commitment-Stufe zum Abrufen des Verlaufs. `processed` wird nicht
            unterstützt.
          enum:
            - confirmed
            - finalized
          default: confirmed
        status:
          type: string
          description: >-
            Einzubeziehendes Ausführungsergebnis. Die Filterung erfolgt vor dem
            Abgleich. Ausgeschlossene Transaktionen werden daher nicht auf das
            Budget angerechnet.
          enum:
            - succeeded
            - failed
            - any
          default: succeeded
        tokenAccounts:
          allOf:
            - $ref: '#/components/schemas/TokenAccountsFilter'
          description: >-
            Legt fest, ob Transaktionen einbezogen werden, die nur ein
            Token-Konto referenzieren, das `address` gehört, aber nicht
            `address` selbst: `none` schließt sie aus, `balanceChanged` schließt
            diejenigen ein, die den Saldo des Token-Kontos ändern, und `all`
            schließt alle ein. Verwende `balanceChanged`, wenn du eine Wallet
            nach Mint durchsuchst.
        minContextSlot:
          type: integer
          description: Minimaler slot, bei dem der request ausgewertet werden kann.
        rawTransaction:
          allOf:
            - $ref: '#/components/schemas/RawTransactionEncoding'
          description: >-
            Codierung der ursprünglichen Solana-Transaktion, die bei jedem
            erfolgreichen Ergebnis als `rawTransaction` im
            `getTransaction`-Format zurückgegeben wird. Gilt nur für das
            `transactions`-Format.
        slot:
          allOf:
            - $ref: '#/components/schemas/ComparisonBounds'
          description: Vergleichsgrenzen für den slot. Jede Grenze ist optional.
        time:
          allOf:
            - $ref: '#/components/schemas/ComparisonBounds'
          description: >-
            Vergleichsgrenzen für die Blockzeit in Unix-Sekunden. Jede Grenze
            ist optional.
    ScanPage:
      type: object
      description: >-
        Die Treffer im angeforderten `returnShape` und eine Zusammenfassung des
        Scans.
      properties:
        data:
          description: >-
            Die Treffer in `sortOrder`. Bei `transactions` hat jedes Element
            dasselbe `TransactionResult`-Format, das
            `/v1/parsed-events/transactions` zurückgibt. Bei `signatures` ist
            jedes Element eine `ScanSignature`. Bei `count` fehlt dieses Feld.
            Kann leer sein, wenn `paginationToken` vorhanden ist.
          oneOf:
            - type: array
              title: Transaktionen
              items:
                $ref: '#/components/schemas/TransactionResult'
            - type: array
              title: Signaturen
              items:
                $ref: '#/components/schemas/ScanSignature'
        paginationToken:
          type: string
          description: >-
            Cursor, an dem der nächste Scan fortgesetzt wird. Fehlt, wenn der
            Scan das Ende des Verlaufs oder Zeitfensters erreicht hat.
        scan:
          $ref: '#/components/schemas/ScanSummary'
    ErrorResponse:
      type: object
      description: Response mit einem Fehler auf request-Ebene.
      properties:
        error:
          type: string
          description: Fehlermeldung.
    ScanMatch:
      type: object
      description: >-
        Kriterien, die eine Transaktion erfüllen muss. Lege `programs`, `mints`
        oder beides fest. Wenn du beides festlegst, muss eine Transaktion beide
        Kriterien erfüllen.
      additionalProperties: false
      properties:
        programs:
          type: array
          description: >-
            Abzugleichende Programme, höchstens 20 und jedes nur einmal. Eine
            Transaktion stimmt überein, wenn sie innerhalb des `scope` des
            Programms eine Anweisung eines dieser Programme enthält, entweder
            auf oberster Ebene oder intern (CPI).
          maxItems: 20
          items:
            $ref: '#/components/schemas/ScanProgramMatch'
        mints:
          type: array
          description: >-
            Abzugleichende Mints, höchstens 20 und jeder nur einmal. Eine
            Transaktion stimmt überein, wenn einer ihrer Token-Salden vor oder
            nach der Transaktion innerhalb des `scope` des Mints zu einem dieser
            Mints gehört.
          maxItems: 20
          items:
            $ref: '#/components/schemas/ScanMintMatch'
    ScanBudget:
      type: object
      description: Begrenzt, wie viel Verlauf ein einzelner request durchsucht.
      additionalProperties: false
      properties:
        maxScannedTransactions:
          type: integer
          description: >-
            Maximale Anzahl der in diesem request zu durchsuchenden
            Transaktionen, von 1 bis 10.000.
          minimum: 1
          maximum: 10000
          default: 10000
    TokenAccountsFilter:
      type: string
      description: >-
        Legt fest, ob Transaktionen einbezogen werden, die nur ein Token-Konto
        referenzieren, das `address` gehört, aber nicht `address` selbst: `none`
        schließt sie aus, `balanceChanged` schließt diejenigen ein, die den
        Saldo des Token-Kontos ändern, und `all` schließt alle ein.
      enum:
        - none
        - balanceChanged
        - all
      default: none
    RawTransactionEncoding:
      type: string
      description: >-
        Codierung der ursprünglichen Solana-Transaktion, die bei jedem
        erfolgreichen Ergebnis als `rawTransaction` im `getTransaction`-Format
        zurückgegeben wird. `none` gibt keine Rohtransaktion zurück.
      enum:
        - none
        - json
        - jsonParsed
        - base64
      default: none
    ComparisonBounds:
      type: object
      description: Numerische Vergleichsgrenzen. Jedes Feld ist optional.
      additionalProperties: false
      properties:
        gt:
          type: integer
          description: Stimmt mit Werten überein, die größer als dieser Wert sind.
        gte:
          type: integer
          description: Stimmt mit Werten überein, die größer oder gleich diesem Wert sind.
        lt:
          type: integer
          description: Stimmt mit Werten überein, die kleiner als dieser Wert sind.
        lte:
          type: integer
          description: Stimmt mit Werten überein, die kleiner oder gleich diesem Wert sind.
    TransactionResult:
      type: object
      description: Parser-Ergebnis pro Signatur.
      properties:
        signature:
          type: string
          description: Transaktionssignatur für dieses Element.
        parserStatus:
          type: string
          description: >-
            `OK`, wenn das Parsen erfolgreich war, oder `ERROR`, wenn das
            Element nicht abgerufen oder geparst werden konnte.
          enum:
            - OK
            - ERROR
        parsed:
          allOf:
            - $ref: '#/components/schemas/ParsedTransaction'
          description: >-
            Geparstes Transaktionsobjekt. Vorhanden, wenn `parserStatus` den
            Wert `OK` hat.
        parserError:
          allOf:
            - $ref: '#/components/schemas/ParserError'
          description: >-
            Fehler auf Elementebene. Vorhanden, wenn `parserStatus` den Wert
            `ERROR` hat.
        rawTransaction:
          type: object
          description: >-
            Ursprüngliche Solana-Transaktion im `getTransaction`-Format für die
            angeforderte `rawTransaction`-Codierung. Bei `base64` ist
            `transaction` gleich `[data, "base64"]`. Nur vorhanden, wenn eine
            Rohtransaktion angefordert wird.
          additionalProperties: true
    ScanSignature:
      type: object
      description: >-
        Ein Treffer, der zurückgegeben wird, wenn `returnShape` auf `signatures`
        gesetzt ist.
      properties:
        signature:
          type: string
          description: Transaktionssignatur.
        slot:
          type: integer
          description: Slot, der die Transaktion enthält.
        transactionIndex:
          type: integer
          description: Position der Transaktion in ihrem slot.
        blockTime:
          type: integer
          nullable: true
          description: Blockzeit in Unix-Sekunden, sofern verfügbar.
    ScanSummary:
      type: object
      description: Gibt an, wie weit der Scan gekommen ist und warum er beendet wurde.
      properties:
        stoppedOn:
          type: string
          description: >-
            Grund für das Ende des Scans: `windowEnd` (Ende des Verlaufs oder
            Zeitfensters), `limit` (`limit` Treffer zurückgegeben), `budget`
            (`maxScannedTransactions` durchsucht) oder `deadline` (Zeitlimit des
            requests erreicht).
          enum:
            - windowEnd
            - limit
            - budget
            - deadline
        scannedTransactions:
          type: integer
          description: In diesem request durchsuchte Transaktionen.
        matchedTransactions:
          type: integer
          description: >-
            In diesem request gefundene Treffer. Wenn `returnShape` auf `count`
            gesetzt ist, ist dies das Ergebnis.
        scannedThrough:
          allOf:
            - $ref: '#/components/schemas/ScannedThrough'
          description: >-
            Die letzte durchsuchte Transaktion. Fehlt, wenn nichts durchsucht
            wurde.
        creditsCharged:
          type: integer
          description: >-
            Berechnete Credits: 10 pro request plus 1 pro durchsuchter
            Verlaufsseite mit jeweils bis zu 1.000 Transaktionen.
    ScanProgramMatch:
      type: object
      description: >-
        Findet Transaktionen mit einer Anweisung von `programId`, entweder auf
        oberster Ebene oder intern (CPI). Lege `instructions`, `discriminators`
        oder beides fest, um den Abgleich einzugrenzen. Lasse beide weg, um jede
        Anweisung des Programms abzugleichen.
      required:
        - programId
      additionalProperties: false
      properties:
        programId:
          type: string
          description: Programmadresse.
        instructions:
          type: array
          description: >-
            Anweisungsnamen aus einer beliebigen IDL-Version des Programms, in
            der Schreibweise der IDL oder in snake_case. Höchstens 50. Kann mit
            `discriminators` kombiniert werden.
          maxItems: 50
          items:
            type: string
        discriminators:
          type: array
          description: >-
            Präfixe der Anweisungsdaten mit jeweils 1 bis 8 hexadezimal
            codierten Bytes und einem optionalen `0x`-Präfix. Höchstens 50. Kann
            mit `instructions` kombiniert werden.
          maxItems: 50
          items:
            type: string
        scope:
          allOf:
            - $ref: '#/components/schemas/MatchScope'
          description: >-
            Legt fest, welche Anweisungen des Programms zählen. `address`
            berücksichtigt nur Anweisungen mit einem Konto, das `address` ist,
            einem Token-Konto, das `address` gehört, oder einem Token-Konto,
            dessen Mint `address` ist. Wenn `address` das Programm ist, zählt
            jede Anweisung. `transaction` berücksichtigt jede Anweisung des
            Programms in der Transaktion.
    ScanMintMatch:
      type: object
      description: >-
        Findet Transaktionen mit einem Token-Saldo vor oder nach der Transaktion
        für `mint` innerhalb von `scope`. Der native SOL-Mint
        `So11111111111111111111111111111111111111111` gleicht stattdessen
        Änderungen an Lamports ab. Die dem Gebührenzahler berechnete Gebühr wird
        nicht berücksichtigt.
      required:
        - mint
      additionalProperties: false
      properties:
        mint:
          type: string
          description: >-
            Adresse des Token-Mints. Der native SOL-Mint
            `So11111111111111111111111111111111111111111` gleicht Änderungen an
            Lamports statt Token-Salden ab. Die Gebühr wird nicht
            berücksichtigt.
        scope:
          allOf:
            - $ref: '#/components/schemas/MatchScope'
          description: >-
            Legt fest, welche Token-Salden des Mints zählen. `address`
            berücksichtigt nur Salden, deren Token-Konto `address` ist oder ihr
            gehört, oder deren Mint `address` ist. Bei nativem SOL zählen nur
            Änderungen an den Lamports von `address`. `transaction`
            berücksichtigt jeden Saldo des Mints in der Transaktion. Bei nativem
            SOL zählt eine Änderung an den Lamports eines beliebigen Kontos.
    ParsedTransaction:
      type: object
      description: Transaktionsmodell von Parser v2.
      properties:
        slot:
          type: integer
          description: Slot, der die Transaktion enthält.
        blockTime:
          type: integer
          description: Unix-Zeitstempel des Blocks, sofern verfügbar.
          nullable: true
        fee:
          type: integer
          description: Transaktionsgebühr in Lamports.
        feePayer:
          type: string
          description: Konto des Gebührenzahlers, sofern verfügbar.
          nullable: true
        transactionStatus:
          type: string
          description: >-
            `OK`, wenn die Transaktion erfolgreich ausgeführt wurde, oder
            `ERROR`, wenn die Ausführung fehlgeschlagen ist.
          enum:
            - OK
            - ERROR
        nativeTransfers:
          type: array
          description: SOL-Übertragungen auf Transaktionsebene in Lamports.
          items:
            $ref: '#/components/schemas/NativeTransfer'
        tokenTransfers:
          type: array
          description: SPL-Token- und Token-2022-Übertragungen auf Transaktionsebene.
          items:
            $ref: '#/components/schemas/TokenTransfer'
        summary:
          allOf:
            - $ref: '#/components/schemas/ParsedSummary'
          description: Beste Zusammenfassung auf Transaktionsebene, sofern verfügbar.
          nullable: true
        instructions:
          type: array
          description: >-
            Geparste Top-Level- und innere Anweisungen in
            Ausführungsreihenfolge.
          items:
            $ref: '#/components/schemas/ParsedInstruction'
    ParserError:
      type: object
      description: Parser-Fehler auf Elementebene.
      properties:
        code:
          type: string
          description: Maschinenlesbarer Fehlercode des Parsers.
        message:
          type: string
          description: Menschenlesbare Fehlermeldung des Parsers.
    ScannedThrough:
      type: object
      description: Position der letzten durchsuchten Transaktion.
      properties:
        slot:
          type: integer
          description: Slot der letzten durchsuchten Transaktion.
        blockTime:
          type: integer
          nullable: true
          description: Blockzeit der letzten durchsuchten Transaktion in Unix-Sekunden.
    MatchScope:
      type: string
      description: >-
        Legt fest, wo sich die Anweisungen eines Programms oder die Token-Salden
        eines Mints befinden müssen, damit sie zählen.
      enum:
        - address
        - transaction
      default: address
    NativeTransfer:
      type: object
      description: Auf Transaktionsebene erkannte SOL-Bewegung.
      properties:
        fromUserAccount:
          type: string
          description: Konto, das Lamports sendet.
          nullable: true
        toUserAccount:
          type: string
          description: Konto, das Lamports empfängt.
          nullable: true
        amount:
          type: integer
          description: Betrag in Lamports.
    TokenTransfer:
      type: object
      description: Auf Transaktionsebene erkannte SPL-Token- oder Token-2022-Bewegung.
      properties:
        fromUserAccount:
          type: string
          description: Eigentümer oder Autorität der Quellseite, sofern bekannt.
          nullable: true
        toUserAccount:
          type: string
          description: Eigentümer der Zielseite, sofern bekannt.
          nullable: true
        fromTokenAccount:
          type: string
          description: Quellkonto für token.
          nullable: true
        toTokenAccount:
          type: string
          description: Zielkonto für token.
          nullable: true
        rawTokenAmount:
          type: integer
          description: Roher ganzzahliger token-Betrag.
        decimals:
          type: integer
          description: Dezimalstellen des Mint zur Interpretation des Rohbetrags.
        tokenStandard:
          type: string
          description: >-
            Token-Standard, sofern bekannt, etwa `Fungible` oder
            `UnknownStandard`.
        mint:
          type: string
          description: Mint-Adresse des token.
    ParsedSummary:
      type: object
      description: Menschenlesbare Zusammenfassung einer Transaktion oder Anweisung.
      properties:
        type:
          type: string
          description: >-
            Typ der Zusammenfassung, etwa `swap`, `transfer` oder
            `create_account`.
        description:
          type: string
          description: Menschenlesbarer Zusammenfassungstext.
        parsedData:
          type: object
          description: >-
            Strukturierter payload hinter der Zusammenfassung, sofern verfügbar
            — zum Beispiel Swap-Metadaten mit `protocol`, `kind`, Beträgen und
            Mints. Die Struktur variiert je nach Zusammenfassungstyp und
            Protokoll.
          nullable: true
          additionalProperties: true
    ParsedInstruction:
      type: object
      description: Geparste Top-Level- oder innere Anweisung.
      properties:
        instructionIndex:
          type: integer
          description: Index der Top-Level-Anweisung.
        innerInstructionIndex:
          type: integer
          description: >-
            Index der inneren Anweisung innerhalb der Top-Level-Anweisung,
            sofern zutreffend.
          nullable: true
        stackHeight:
          type: integer
          description: Stack-Höhe, sofern verfügbar.
          nullable: true
        programId:
          type: string
          description: ID des Programms, das die Anweisung ausgeführt hat.
        rawAccounts:
          type: array
          description: >-
            Rohe öffentliche Kontoschlüssel, die aus den Kontoindizes der
            Anweisung aufgelöst wurden.
          items:
            type: string
        rawData:
          type: string
          description: Rohe Anweisungsdaten.
        summary:
          allOf:
            - $ref: '#/components/schemas/ParsedSummary'
          description: Zusammenfassung auf Anweisungsebene, sofern verfügbar.
          nullable: true
        programName:
          type: string
          description: Dem Parser bekannter Programmname, sofern verfügbar.
          nullable: true
        instructionName:
          type: string
          description: Dekodierter Anweisungsname, sofern verfügbar.
          nullable: true
        decoded:
          allOf:
            - $ref: '#/components/schemas/DecodedInstruction'
          description: >-
            Dekodierte Argumente und Konten, wenn die Dekodierung erfolgreich
            ist.
          nullable: true
    DecodedInstruction:
      type: object
      description: Dekodierte Anweisungsargumente und benannte Konten.
      properties:
        args:
          type: object
          description: >-
            Dekodierte Anweisungsargumente. Namen und Strukturen der Argumente
            hängen von der Anweisung ab.
          additionalProperties: true
        accounts:
          type: array
          description: Dekodierte Anweisungskonten mit Namen, die dem Parser bekannt sind.
          items:
            $ref: '#/components/schemas/DecodedAccount'
    DecodedAccount:
      type: object
      description: Benanntes Konto, das von einer dekodierten Anweisung verwendet wird.
      properties:
        name:
          type: string
          description: Dem Parser bekannter Kontoname.
        pubkey:
          type: string
          description: Öffentlicher Schlüssel des Kontos.
        isSigner:
          type: boolean
          description: Gibt an, ob das Konto die Transaktion signiert hat.
        isWritable:
          type: boolean
          description: Gibt an, ob das Konto für die Anweisung beschreibbar war.
  responses:
    InternalError:
      description: >-
        Der request ist auf dem Server fehlgeschlagen, etwa weil eine
        gespeicherte Transaktion im angeforderten Bereich nicht decodiert werden
        konnte. Der gesamte request schlägt fehl. Es werden keine Teilergebnisse
        zurückgegeben.
      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.