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

# Analyser l’historique des transactions

> Recherchez côté serveur, dans l’historique d’une adresse, les transactions qui appellent des instructions de programme ou concernent des émissions de tokens, puis renvoyez les correspondances analysées, leurs signatures ou leur nombre.

Le corps de la requête, le schéma de réponse et les exemples de cette page sont générés à partir de la définition OpenAPI.

Scan parcourt l’historique d’une adresse, conserve les transactions qui correspondent à vos critères `match` et analyse uniquement celles-ci. Utilisez-le au lieu de parcourir [l’historique des transactions analysées](https://www.helius.dev/docs/fr/api-reference/parsed-events/transaction-history.md) page par page et de le filtrer côté client.

Par défaut, chaque élément de `data` utilise la même structure `TransactionResult` que celle renvoyée par [Parse Transactions](https://www.helius.dev/docs/fr/api-reference/parsed-events/transactions.md). Définissez `returnShape` pour obtenir uniquement les signatures correspondantes ou seulement leur nombre. La réponse comprend également un résumé `scan` qui indique jusqu’où l’analyse est allée et pourquoi elle s’est arrêtée.

## Fonctionnement de Scan

1. Scan récupère l’historique de l’adresse par pages pouvant contenir jusqu’à 1 000 transactions, dans `sortOrder`, selon les limites `slot`, `time` et de signature que vous définissez.
2. Il conserve les transactions qui correspondent à tous les critères définis dans `match`.
3. Il s’arrête dès que l’une de ces conditions est remplie : `limit` correspondances trouvées (uniquement avec la structure `transactions` par défaut), `budget.maxScannedTransactions` transactions analysées, fin de l’historique ou de la fenêtre, ou limite de temps de la requête atteinte.

Une analyse qui s’arrête prématurément reste un `200`. Relancez-la avec le `paginationToken` renvoyé tant qu’il est présent, même lorsque `data` est vide.

## Critères de correspondance

`match` est obligatoire. Définissez `programs`, `mints` ou les deux. Lorsque vous définissez les deux, une transaction doit correspondre aux deux.

### Correspondance par programme

`programs` répertorie jusqu’à 20 programmes, chacun une seule fois au maximum. Une transaction correspond lorsqu’elle contient une instruction de l’un de ces programmes, de premier niveau ou interne (CPI), dans la portée `scope` du programme.

Pour chaque programme, vous pouvez affiner la correspondance :

* `instructions` : noms d’instructions issus de n’importe quelle version de l’IDL du programme, tels qu’ils sont écrits dans l’IDL ou en snake\_case. Un nom introuvable dans les IDL du programme renvoie `400`.
* `discriminators` : préfixes des données d’instruction, chacun composé de 1 à 8 octets encodés en hexadécimal avec un préfixe `0x` facultatif. Utilisez-les pour les programmes sans IDL.
* Définissez l’une des listes ou les deux. Avec les deux, une instruction correspond lorsqu’elle fait partie des instructions nommées ou lorsque ses données commencent par l’un des discriminateurs. Omettez les deux pour accepter n’importe quelle instruction du programme.
* Chaque liste accepte au maximum 50 entrées par programme.

Pour confirmer les noms d’instructions décodées d’un programme, utilisez la méthode [`describeProgram`](https://www.helius.dev/docs/fr/parsed-streams/quickstart#découverte) de Parsed Streams.

### Correspondance par émission

`mints` répertorie jusqu’à 20 objets de la forme `{ "mint": "...", "scope": "address" }`, chaque émission une seule fois au maximum. Une transaction correspond lorsqu’un de ses soldes de tokens avant ou après la transaction concerne l’une des émissions, dans la portée `scope` de cette émission.

Lorsque vous analysez un portefeuille pour une émission, définissez `tokenAccounts` sur `balanceChanged`. Par défaut, l’historique exclut les transactions qui concernent uniquement les comptes de tokens du portefeuille et non le portefeuille lui-même, ce qui inclut de nombreux transferts de tokens entrants.

### Correspondance avec le SOL natif

Le SOL natif n’a pas de soldes de tokens. Scan établit donc la correspondance à partir des lamports. Utilisez l’émission de SOL natif `So11111111111111111111111111111111111111111` (le SOL enveloppé est `So11111111111111111111111111111111111111112`) :

* Avec la portée `address`, une transaction correspond lorsque le nombre de lamports de l’adresse analysée a changé.
* Avec la portée `transaction`, elle correspond lorsque le nombre de lamports de n’importe quel compte a changé.

Les frais facturés au payeur ne sont pas pris en compte. Chaque compte est comparé individuellement : les lamports qui quittent un compte puis y reviennent au cours de la même transaction ne sont donc pas pris en compte. La correspondance avec le SOL natif détecte les SOL qu’un programme verse sans instruction de transfert, par exemple lors d’une vente Pump.fun. Elle détecte également les mouvements accessoires, comme les pourboires Jito ainsi que le loyer payé pour des comptes ou remboursé depuis ceux-ci.

### Portée de la correspondance

Chaque programme et chaque émission accepte une valeur `scope` :

| `scope` | L’instruction d’un programme est prise en compte lorsque | Le solde de tokens d’une émission est pris en compte lorsque |
| - | - | - |
| `address` (par défaut) | L’un de ses comptes est `address`, un compte de tokens appartient à `address`, un compte de tokens a pour émission `address`, ou `address` est le programme lui-même. | Son compte de tokens est `address` ou appartient à `address`, ou son émission est `address`. |
| `transaction` | Elle apparaît n’importe où dans la transaction. | Il apparaît n’importe où dans la transaction. |

Utilisez la portée `transaction` lorsque l’adresse analysée figure dans la transaction, mais pas dans l’instruction ou le solde recherché. Par exemple, l’adresse paie uniquement les frais, exécute une transaction multisignature ou est absente d’un CPI d’événement Anchor. L’analyse de l’émission d’un token pour rechercher des transactions qui détiennent également des USDC nécessite la portée `transaction` sur l’entrée USDC.

La propriété du compte de tokens provient de la valeur `owner` enregistrée sur chaque solde de tokens. Les transactions plus anciennes qui ne l’enregistrent pas correspondent à la portée `address` uniquement sur `address` lui-même.

## Structures de retour

`returnShape` définit le contenu de la réponse pour les correspondances :

| `returnShape` | `data` | Utilisez-le pour |
| - | - | - |
| `transactions` (par défaut) | Correspondances analysées, jusqu’à `limit`. | Lire les instructions décodées, les transferts et les résumés. |
| `signatures` | Un objet `{ signature, slot, transactionIndex, blockTime }` par correspondance. | Collecter les signatures correspondantes sans les analyser. |
| `count` | Omis. `scan.matchedTransactions` correspond au nombre de correspondances. | Compter les correspondances dans une plage. |

`signatures` et `count` ignorent `limit` et `rawTransaction`. Ils renvoient toutes les correspondances de la plage analysée par une requête. Ils s’arrêtent donc uniquement sur `windowEnd`, `budget` ou `deadline`. Pour compter un historique entier, continuez à appeler l’API avec `paginationToken` et additionnez les valeurs `scan.matchedTransactions`.

Chaque élément de `data` avec `returnShape: "signatures"` se présente comme suit :

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

Les trois structures ont le même coût, car les crédits dépendent des pages d’historique analysées et non des données renvoyées.

## Exemples de requêtes

### Achats et ventes Pump.fun

Analysez l’historique du programme Pump.fun pour rechercher les instructions `buy` et `sell` :

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

Pump.fun comporte également des variantes telles que `buy_exact_sol_in`, `buy_v2` et `sell_v2`. Répertoriez tous les noms d’instructions que vous souhaitez rechercher.

### Achats et ventes d’un token

Pour obtenir les échanges Pump.fun d’un token, analysez l’adresse d’émission du token plutôt que le programme. L’historique de l’émission contient uniquement l’activité de ce token, et chaque instruction d’achat ou de vente répertorie l’émission comme compte. Elle correspond donc avec la portée `address` par défaut :

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

Pour conserver uniquement les transactions du token qui impliquent également un compte de tokens USDC, ajoutez USDC avec la portée `transaction`. Avec la portée `address` par défaut, un solde USDC devrait appartenir à l’adresse d’émission. Aucune transaction ne correspondrait donc :

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

### Échanges d’un portefeuille sur deux programmes

Répertoriez plusieurs programmes pour rechercher un appel à l’un d’entre eux. Cette requête renvoie uniquement les signatures des échanges Pump.fun et PumpSwap d’un portefeuille :

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

### Activité USDC d’un portefeuille sur une période

Analysez l’historique d’un portefeuille pour rechercher les transactions qui ont concerné des USDC en 2025. `tokenAccounts: "balanceChanged"` inclut les transferts qui ont concerné uniquement le compte de tokens USDC du portefeuille :

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

Pour obtenir uniquement le nombre de transactions correspondantes, ajoutez `"returnShape": "count"`.

### Mouvements de SOL d’un portefeuille

Recherchez dans un portefeuille les transactions qui ont modifié son solde de SOL, au-delà des frais payés, pendant l’année 2025. Cela inclut les SOL qu’un programme a versés sans instruction de transfert :

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

## Pagination et motifs d’arrêt

`scan.stoppedOn` indique pourquoi la requête s’est terminée :

| `stoppedOn` | Signification | `paginationToken` |
| - | - | - |
| `windowEnd` | Fin de l’historique ou de la fenêtre demandée atteinte. | Absent. L’analyse est terminée. |
| `limit` | `limit` correspondances renvoyées. Uniquement avec la structure `transactions` par défaut. | Reprend immédiatement après la dernière correspondance renvoyée afin de n’en ignorer aucune. |
| `budget` | `budget.maxScannedTransactions` transactions analysées. | Reprend à la page suivante de l’historique. |
| `deadline` | Limite de temps de la requête atteinte. | Reprend à la page suivante de l’historique. Une page interrompue par l’échéance est récupérée de nouveau lors de l’appel suivant. |

`scan.scannedThrough` fournit le slot et l’heure de bloc de la dernière transaction analysée, afin que vous puissiez rendre compte de la progression dans les historiques volumineux.

L’analyse d’une instruction rare peut épuiser son budget sans trouver de correspondance. La réponse contient alors un tableau `data` vide, mais renvoie tout de même un `paginationToken`. Poursuivez donc l’analyse :

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

Cette boucle poursuit l’analyse jusqu’à épuisement de l’historique :

```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]
>
> Analysez l’adresse la plus précise possible. Chaque transaction de l’historique de l’adresse est décomptée du budget. Moins une adresse comporte de transactions sans rapport, plus chaque requête trouve de correspondances.

## Crédits

Chaque analyse coûte **10 crédits plus 1 crédit par page d’historique analysée**. Une page contient jusqu’à 1 000 transactions. Une analyse avec le budget par défaut de 10 000 transactions coûte donc au maximum 20 crédits. Une page interrompue par l’échéance n’est ni analysée ni facturée.

Chaque réponse indique son coût dans `scan.creditsCharged`. Consultez [Crédits](https://www.helius.dev/docs/fr/billing/credits.md) pour connaître la tarification des forfaits.

## Erreurs

| Statut | Quand |
| - | - |
| `400` | Le corps n’est pas valide ou contient des champs inconnus ; `match` ne définit ni `programs` ni `mints` ; un programme ou une émission est répertorié plusieurs fois ; une adresse ou une émission n’est pas valide ; un nom d’instruction ne figure pas dans les IDL du programme ; une liste dépasse sa limite ; `scope`, `returnShape`, `rawTransaction` ou `tokenAccounts` a une valeur inconnue ; `limit` est en dehors de la plage de 1 à 100 avec la structure `transactions` ; ou `budget.maxScannedTransactions` est en dehors de la plage de 1 à 10 000. |
| `500` | La requête a échoué sur le serveur, par exemple parce qu’une transaction stockée dans la plage analysée n’a pas pu être décodée. Aucun résultat partiel n’est renvoyé. |
| `503` | Le service a atteint sa capacité maximale, ou la première page de l’historique n’a pas été traitée avant la limite de temps de la requête. Réessayez la requête. |

Les erreurs au niveau de la requête renvoient un corps JSON avec un message `error`, tel que `{"error": "limit must be between 1 and 100"}`. Un corps comportant un champ inconnu, comme `includeRawTransaction` (utilisez `rawTransaction`), ou avec `mints` sous forme de chaînes simples au lieu d’objets `{ "mint": "..." }`, renvoie `{"error": "invalid request payload"}`.

## Paramètres de la requête

**address** `string` *required*

Adresse dont l’historique est analysé.

**match** `object` *required*

Critères auxquels une transaction doit correspondre. Définissez `programs`, `mints` ou les deux. Lorsque les deux sont définis, une transaction doit correspondre aux deux.

**match.programs** `array`

Programmes à rechercher, 20 au maximum, chacun une seule fois au maximum. Une transaction correspond lorsqu’elle contient une instruction de l’un de ces programmes, de premier niveau ou interne (CPI), dans la portée `scope` du programme.

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

Adresse du programme.

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

Noms d’instructions issus de n’importe quelle version de l’IDL du programme, tels qu’ils sont écrits dans l’IDL ou en snake\_case. 50 au maximum. Peut être combiné avec `discriminators`.

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

Préfixes des données d’instruction, chacun composé de 1 à 8 octets encodés en hexadécimal avec un préfixe `0x` facultatif. 50 au maximum. Peut être combiné avec `instructions`.

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

Instructions du programme à prendre en compte. `address` prend uniquement en compte les instructions contenant un compte qui est `address`, un compte de tokens appartenant à `address` ou un compte de tokens dont l’émission est `address`, ou chaque instruction lorsque `address` est le programme. `transaction` prend en compte toute instruction du programme dans la transaction.

* `address`
* `transaction`

**match.mints** `array`

Émissions à rechercher, 20 au maximum, chacune une seule fois au maximum. Une transaction correspond lorsqu’un de ses soldes de tokens avant ou après la transaction concerne l’une de ces émissions, dans la portée `scope` de l’émission.

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

Adresse d’émission du token. L’émission de SOL natif `So11111111111111111111111111111111111111111` établit la correspondance à partir des changements de lamports plutôt que des soldes de tokens, sans prendre en compte les frais.

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

Soldes de tokens de l’émission à prendre en compte. `address` prend uniquement en compte les soldes dont le compte de tokens est `address` ou lui appartient, ou dont l’émission est `address`. Pour le SOL natif, seuls les changements du nombre de lamports de `address` sont pris en compte. `transaction` prend en compte tout solde de l’émission dans la transaction. Pour le SOL natif, tout changement du nombre de lamports d’un compte est pris en compte.

* `address`
* `transaction`

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

Contenu de la réponse pour les correspondances : `transactions` (correspondances analysées dans `data`, jusqu’à `limit`), `signatures` (`signature`, `slot`, `transactionIndex` et `blockTime` par correspondance dans `data`), ou `count` (aucun `data` ; `scan.matchedTransactions` correspond au nombre de correspondances). `signatures` et `count` ignorent `limit` et `rawTransaction`.

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

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

Nombre maximal de correspondances à renvoyer avec la structure `transactions`, de 1 à 100.

**budget** `object`

Limites de la quantité d’historique qu’une requête peut analyser.

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

Nombre maximal de transactions à analyser dans cette requête, de 1 à 10 000.

**beforeSignature** `string`

Analyse les transactions antérieures à cette signature.

**afterSignature** `string`

Analyse les transactions postérieures à cette signature.

**paginationToken** `string`

Curseur renvoyé par une analyse précédente. Sa structure est `slot:transactionIndex`.

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

Ordre dans lequel l’historique est analysé et les correspondances sont renvoyées.

* `asc`
* `desc`

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

Niveau d’engagement utilisé pour récupérer l’historique. `processed` n’est pas pris en charge.

* `confirmed`
* `finalized`

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

Résultat d’exécution à inclure. Le filtrage a lieu avant la recherche de correspondances. Les transactions exclues ne sont donc pas décomptées du budget.

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

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

Indique s’il faut inclure les transactions qui référencent uniquement un compte de tokens appartenant à `address`, et non `address` lui-même : `none` les exclut, `balanceChanged` inclut celles qui modifient le solde du compte de tokens et `all` les inclut toutes. Utilisez `balanceChanged` lorsque vous analysez un portefeuille par émission.

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

**minContextSlot** `number`

Slot minimal auquel la requête peut être évaluée.

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

Encodage de la transaction Solana d’origine renvoyée sous `rawTransaction` pour chaque résultat réussi, dans la structure `getTransaction`. S’applique uniquement à la structure `transactions`.

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

**slot** `object`

Limites de comparaison des slots. Chaque limite est facultative.

**slot.gt** `number`

Recherche les valeurs supérieures à cette valeur.

**slot.gte** `number`

Recherche les valeurs supérieures ou égales à cette valeur.

**slot.lt** `number`

Recherche les valeurs inférieures à cette valeur.

**slot.lte** `number`

Recherche les valeurs inférieures ou égales à cette valeur.

**time** `object`

Limites de comparaison de l’heure de bloc en secondes Unix. Chaque limite est facultative.

**time.gt** `number`

Recherche les valeurs supérieures à cette valeur.

**time.gte** `number`

Recherche les valeurs supérieures ou égales à cette valeur.

**time.lt** `number`

Recherche les valeurs inférieures à cette valeur.

**time.lte** `number`

Recherche les valeurs inférieures ou égales à cette valeur.


## OpenAPI

````yaml fr/openapi/parsed-events.yaml POST /v1/parsed-events/scan
openapi: 3.0.3
info:
  title: Événements Analysés
  version: 0.1.0
  description: >-
    Analysez les transactions Solana et l'historique des transactions analysées
    avec les Événements Analysés.
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/scan:
    post:
      tags:
        - Événements analysés
      summary: Analyser l'historique des transactions
      description: >-
        Recherchez dans l'historique d'une adresse les transactions qui
        appellent l'un des programmes spécifiés, concernent l'une des émissions
        de jetons spécifiées, ou les deux, puis renvoyez les correspondances
        analysées, leurs signatures ou leur nombre.
      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: >-
            Les correspondances au format `returnShape` demandé et un résumé de
            l'analyse. Un résultat partiel renvoie toujours un code 200.
            Continuez avec `paginationToken` tant qu'un jeton est renvoyé.
          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 a
                              échangé 0.004207183 SOL contre 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 a
                                  échangé 0.004207183 SOL contre 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 a
                                  transféré 612181.177082
                                  3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                  de
                                  2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                  vers
                                  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 a
                                  transféré 0.004207183 SOL vers
                                  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: Requête non valide. Le message `error` indique le problème.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                default:
                  value:
                    error: >-
                      instructions de match.programs introuvables dans les IDL
                      de 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P :
                      not_a_real_ix
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          description: >-
            Le service a atteint sa capacité maximale, ou le traitement de la
            première page de l'historique ne s'est pas terminé avant l'échéance
            de la requête. Réessayez la requête.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                default:
                  value:
                    error: service indisponible
components:
  schemas:
    ScanRequest:
      type: object
      description: >-
        Corps de la requête permettant d'analyser l'historique d'une adresse
        afin de trouver les transactions correspondantes.
      required:
        - address
        - match
      additionalProperties: false
      properties:
        address:
          type: string
          description: Adresse dont l'historique est analysé.
        match:
          $ref: '#/components/schemas/ScanMatch'
        returnShape:
          type: string
          description: >-
            Contenu de la réponse pour les correspondances : `transactions`
            (correspondances analysées dans `data`, jusqu'à `limit`),
            `signatures` (`signature`, `slot`, `transactionIndex` et `blockTime`
            pour chaque correspondance dans `data`) ou `count` (aucune donnée
            `data` ; `scan.matchedTransactions` correspond au nombre de
            correspondances). `signatures` et `count` ignorent `limit` et
            `rawTransaction`.
          enum:
            - transactions
            - signatures
            - count
          default: transactions
        limit:
          type: integer
          description: >-
            Nombre maximal de correspondances à renvoyer avec le format
            `transactions`, de 1 à 100.
          minimum: 1
          maximum: 100
          default: 100
        budget:
          $ref: '#/components/schemas/ScanBudget'
        beforeSignature:
          type: string
          description: Analyse les transactions antérieures à cette signature.
        afterSignature:
          type: string
          description: Analyse les transactions postérieures à cette signature.
        paginationToken:
          type: string
          description: >-
            Curseur renvoyé par une analyse précédente. Son format est
            `slot:transactionIndex`.
        sortOrder:
          type: string
          description: >-
            Ordre dans lequel l'historique est analysé et les correspondances
            sont renvoyées.
          enum:
            - asc
            - desc
          default: desc
        commitment:
          type: string
          description: >-
            Niveau d'engagement utilisé pour récupérer l'historique. `processed`
            n'est pas pris en charge.
          enum:
            - confirmed
            - finalized
          default: confirmed
        status:
          type: string
          description: >-
            Résultat d'exécution à inclure. Le filtrage est effectué avant la
            recherche des correspondances ; les transactions exclues ne sont
            donc pas comptabilisées dans le budget.
          enum:
            - succeeded
            - failed
            - any
          default: succeeded
        tokenAccounts:
          allOf:
            - $ref: '#/components/schemas/TokenAccountsFilter'
          description: >-
            Indique s'il faut inclure les transactions qui référencent
            uniquement un compte de jetons détenu par `address`, et non
            `address` elle-même : `none` les exclut, `balanceChanged` inclut
            celles qui modifient le solde du compte de jetons et `all` les
            inclut toutes. Utilisez `balanceChanged` lorsque vous analysez un
            portefeuille par émission.
        minContextSlot:
          type: integer
          description: Slot minimal auquel la requête peut être évaluée.
        rawTransaction:
          allOf:
            - $ref: '#/components/schemas/RawTransactionEncoding'
          description: >-
            Encodage de la transaction Solana d'origine renvoyée sous
            `rawTransaction` pour chaque résultat réussi, au format
            `getTransaction`. S'applique uniquement au format `transactions`.
        slot:
          allOf:
            - $ref: '#/components/schemas/ComparisonBounds'
          description: Bornes de comparaison des slots. Chaque borne est facultative.
        time:
          allOf:
            - $ref: '#/components/schemas/ComparisonBounds'
          description: >-
            Bornes de comparaison de l'heure du bloc en secondes Unix. Chaque
            borne est facultative.
    ScanPage:
      type: object
      description: >-
        Les correspondances au format `returnShape` demandé et un résumé de
        l'analyse.
      properties:
        data:
          description: >-
            Les correspondances, dans l'ordre `sortOrder`. Avec `transactions`,
            chaque élément possède le même format `TransactionResult` que celui
            renvoyé par `/v1/parsed-events/transactions` ; avec `signatures`,
            chaque élément est un `ScanSignature`. Absent avec `count`. Peut
            être vide lorsque `paginationToken` est présent.
          oneOf:
            - type: array
              title: Transactions
              items:
                $ref: '#/components/schemas/TransactionResult'
            - type: array
              title: Signatures
              items:
                $ref: '#/components/schemas/ScanSignature'
        paginationToken:
          type: string
          description: >-
            Curseur à partir duquel l'analyse suivante continue. Absent lorsque
            l'analyse a atteint la fin de l'historique ou de la fenêtre.
        scan:
          $ref: '#/components/schemas/ScanSummary'
    ErrorResponse:
      type: object
      description: Réponse d'erreur au niveau de la demande.
      properties:
        error:
          type: string
          description: Message d'erreur.
    ScanMatch:
      type: object
      description: >-
        Critères auxquels une transaction doit correspondre. Définissez
        `programs`, `mints` ou les deux. Lorsque les deux sont définis, une
        transaction doit correspondre aux deux.
      additionalProperties: false
      properties:
        programs:
          type: array
          description: >-
            Programmes à rechercher, 20 au maximum, chacun une seule fois. Une
            transaction correspond lorsqu'elle contient une instruction de l'un
            d'eux, de premier niveau ou interne (CPI), dans le `scope` du
            programme.
          maxItems: 20
          items:
            $ref: '#/components/schemas/ScanProgramMatch'
        mints:
          type: array
          description: >-
            Émissions à rechercher, 20 au maximum, chacune une seule fois. Une
            transaction correspond lorsqu'un de ses soldes de jetons avant ou
            après la transaction appartient à l'une de ces émissions, dans le
            `scope` de l'émission.
          maxItems: 20
          items:
            $ref: '#/components/schemas/ScanMintMatch'
    ScanBudget:
      type: object
      description: Limites du volume d'historique qu'une requête peut analyser.
      additionalProperties: false
      properties:
        maxScannedTransactions:
          type: integer
          description: >-
            Nombre maximal de transactions à analyser dans cette requête, de 1 à
            10 000.
          minimum: 1
          maximum: 10000
          default: 10000
    TokenAccountsFilter:
      type: string
      description: >-
        Indique s'il faut inclure les transactions qui référencent uniquement un
        compte de jetons détenu par `address`, et non `address` elle-même :
        `none` les exclut, `balanceChanged` inclut celles qui modifient le solde
        du compte de jetons et `all` les inclut toutes.
      enum:
        - none
        - balanceChanged
        - all
      default: none
    RawTransactionEncoding:
      type: string
      description: >-
        Encodage de la transaction Solana d'origine renvoyée sous
        `rawTransaction` pour chaque résultat réussi, au format
        `getTransaction`. `none` ne renvoie aucune transaction brute.
      enum:
        - none
        - json
        - jsonParsed
        - base64
      default: none
    ComparisonBounds:
      type: object
      description: Limites de comparaison numérique. Chaque champ est facultatif.
      additionalProperties: false
      properties:
        gt:
          type: integer
          description: Correspondre aux valeurs supérieures à cette valeur.
        gte:
          type: integer
          description: Correspondre aux valeurs supérieures ou égales à cette valeur.
        lt:
          type: integer
          description: Correspondre aux valeurs inférieures à cette valeur.
        lte:
          type: integer
          description: Correspondre aux valeurs inférieures ou égales à cette valeur.
    TransactionResult:
      type: object
      description: Résultat du parseur par signature.
      properties:
        signature:
          type: string
          description: Signature de transaction pour cet élément.
        parserStatus:
          type: string
          description: >-
            `OK` lorsque l'analyse a réussi, ou `ERROR` lorsque l'élément a
            échoué à récupérer ou analyser.
          enum:
            - OK
            - ERROR
        parsed:
          allOf:
            - $ref: '#/components/schemas/ParsedTransaction'
          description: >-
            Objet de transaction analysé. Présent lorsque `parserStatus` est
            `OK`.
        parserError:
          allOf:
            - $ref: '#/components/schemas/ParserError'
          description: >-
            Erreur au niveau de l'élément. Présente lorsque `parserStatus` est
            `ERROR`.
        rawTransaction:
          type: object
          description: >-
            Transaction Solana d'origine au format `getTransaction` pour
            l'encodage `rawTransaction` demandé. Avec `base64`, `transaction`
            est `[data, "base64"]`. Présent uniquement lorsqu'une transaction
            brute est demandée.
          additionalProperties: true
    ScanSignature:
      type: object
      description: >-
        Correspondance renvoyée lorsque `returnShape` est défini sur
        `signatures`.
      properties:
        signature:
          type: string
          description: Signature de la transaction.
        slot:
          type: integer
          description: Slot contenant la transaction.
        transactionIndex:
          type: integer
          description: Position de la transaction dans son slot.
        blockTime:
          type: integer
          nullable: true
          description: Heure du bloc en secondes Unix, lorsqu'elle est disponible.
    ScanSummary:
      type: object
      description: Progression de l'analyse et raison de son arrêt.
      properties:
        stoppedOn:
          type: string
          description: >-
            Raison de l'arrêt de l'analyse : `windowEnd` (fin de l'historique ou
            de la fenêtre), `limit` (`limit` correspondances renvoyées),
            `budget` (`maxScannedTransactions` transactions analysées) ou
            `deadline` (délai maximal de la requête atteint).
          enum:
            - windowEnd
            - limit
            - budget
            - deadline
        scannedTransactions:
          type: integer
          description: Transactions analysées dans cette requête.
        matchedTransactions:
          type: integer
          description: >-
            Correspondances trouvées dans cette requête. Lorsque `returnShape`
            est défini sur `count`, il s'agit du résultat.
        scannedThrough:
          allOf:
            - $ref: '#/components/schemas/ScannedThrough'
          description: >-
            Dernière transaction analysée. Absent si aucune transaction n'a été
            analysée.
        creditsCharged:
          type: integer
          description: >-
            Crédits facturés : 10 par requête, plus 1 par page d'historique
            analysée (jusqu'à 1 000 transactions chacune).
    ScanProgramMatch:
      type: object
      description: >-
        Correspond aux transactions contenant une instruction de `programId`, de
        premier niveau ou interne (CPI). Définissez `instructions`,
        `discriminators` ou les deux pour affiner la correspondance, ou aucun
        des deux pour rechercher toute instruction du programme.
      required:
        - programId
      additionalProperties: false
      properties:
        programId:
          type: string
          description: Adresse du programme.
        instructions:
          type: array
          description: >-
            Noms d'instructions provenant de n'importe quelle version de l'IDL
            du programme, tels qu'ils sont orthographiés dans l'IDL ou en
            snake_case. 50 au maximum. Peut être combiné avec `discriminators`.
          maxItems: 50
          items:
            type: string
        discriminators:
          type: array
          description: >-
            Préfixes de données d'instruction, chacun composé de 1 à 8 octets
            encodés en hexadécimal avec un préfixe `0x` facultatif. 50 au
            maximum. Peut être combiné avec `instructions`.
          maxItems: 50
          items:
            type: string
        scope:
          allOf:
            - $ref: '#/components/schemas/MatchScope'
          description: >-
            Instructions du programme à prendre en compte. `address` prend
            uniquement en compte les instructions comportant un compte qui est
            `address`, un compte de jetons détenu par `address` ou un compte de
            jetons dont l'émission est `address`, ou toutes les instructions
            lorsque `address` est le programme. `transaction` prend en compte
            toutes les instructions du programme dans la transaction.
    ScanMintMatch:
      type: object
      description: >-
        Correspond aux transactions dont un solde de jetons avant ou après la
        transaction appartient à `mint`, dans `scope`. L'émission SOL native
        `So11111111111111111111111111111111111111111` recherche plutôt les
        variations de lamports, sans compter les frais facturés au payeur des
        frais.
      required:
        - mint
      additionalProperties: false
      properties:
        mint:
          type: string
          description: >-
            Adresse d'émission du jeton. L'émission SOL native
            `So11111111111111111111111111111111111111111` recherche les
            variations de lamports plutôt que les soldes de jetons, sans compter
            les frais.
        scope:
          allOf:
            - $ref: '#/components/schemas/MatchScope'
          description: >-
            Soldes de jetons de l'émission à prendre en compte. `address` prend
            uniquement en compte les soldes dont le compte de jetons est
            `address`, est détenu par celle-ci, ou dont l'émission est
            `address`. Pour le SOL natif, seules les variations des lamports de
            `address` sont prises en compte. `transaction` prend en compte tous
            les soldes de l'émission dans la transaction. Pour le SOL natif,
            toute variation des lamports d'un compte est prise en compte.
    ParsedTransaction:
      type: object
      description: Modèle de transaction du parseur-v2.
      properties:
        slot:
          type: integer
          description: Slot contenant la transaction.
        blockTime:
          type: integer
          description: Horodatage Unix pour le bloc, lorsque disponible.
          nullable: true
        fee:
          type: integer
          description: Frais de transaction en lamports.
        feePayer:
          type: string
          description: Compte payeur des frais, lorsque disponible.
          nullable: true
        transactionStatus:
          type: string
          description: >-
            `OK` lorsque la transaction s'est exécutée avec succès, ou `ERROR`
            lorsque l'exécution a échoué.
          enum:
            - OK
            - ERROR
        nativeTransfers:
          type: array
          description: Transferts SOL au niveau de la transaction en lamports.
          items:
            $ref: '#/components/schemas/NativeTransfer'
        tokenTransfers:
          type: array
          description: Transferts de jetons SPL et Token-2022 au niveau de la transaction.
          items:
            $ref: '#/components/schemas/TokenTransfer'
        summary:
          allOf:
            - $ref: '#/components/schemas/ParsedSummary'
          description: Meilleur résumé au niveau de la transaction, lorsque disponible.
          nullable: true
        instructions:
          type: array
          description: >-
            Instructions de premier niveau et internes analysées dans l'ordre
            d'exécution.
          items:
            $ref: '#/components/schemas/ParsedInstruction'
    ParserError:
      type: object
      description: Erreur au niveau de l'élément du parseur.
      properties:
        code:
          type: string
          description: Code d'erreur du parseur lisible par machine.
        message:
          type: string
          description: Message d'erreur du parseur lisible par l'homme.
    ScannedThrough:
      type: object
      description: Position de la dernière transaction analysée.
      properties:
        slot:
          type: integer
          description: Slot de la dernière transaction analysée.
        blockTime:
          type: integer
          nullable: true
          description: Heure du bloc de la dernière transaction analysée, en secondes Unix.
    MatchScope:
      type: string
      description: >-
        Emplacement où doivent se trouver les instructions d'un programme ou les
        soldes de jetons d'une émission pour être pris en compte.
      enum:
        - address
        - transaction
      default: address
    NativeTransfer:
      type: object
      description: Mouvement de SOL détecté au niveau de la transaction.
      properties:
        fromUserAccount:
          type: string
          description: Compte envoyant des lamports.
          nullable: true
        toUserAccount:
          type: string
          description: Compte recevant des lamports.
          nullable: true
        amount:
          type: integer
          description: Montant en lamports.
    TokenTransfer:
      type: object
      description: >-
        Mouvement de jeton SPL ou Token-2022 détecté au niveau de la
        transaction.
      properties:
        fromUserAccount:
          type: string
          description: Propriétaire ou autorité pour le côté source, lorsque connu.
          nullable: true
        toUserAccount:
          type: string
          description: Propriétaire pour le côté destinataire, lorsque connu.
          nullable: true
        fromTokenAccount:
          type: string
          description: Compte de jeton source.
          nullable: true
        toTokenAccount:
          type: string
          description: Compte de jeton destinataire.
          nullable: true
        rawTokenAmount:
          type: integer
          description: Montant de jeton brut en entier.
        decimals:
          type: integer
          description: Décimales de la mint utilisées pour interpréter le montant brut.
        tokenStandard:
          type: string
          description: >-
            Norme de jeton lorsque connue, comme `Fungible` ou
            `UnknownStandard`.
        mint:
          type: string
          description: Adresse de mint du jeton.
    ParsedSummary:
      type: object
      description: Résumé lisible par l'homme pour une transaction ou une instruction.
      properties:
        type:
          type: string
          description: Type de résumé, tel que `swap`, `transfer`, ou `create_account`.
        description:
          type: string
          description: Texte de résumé lisible par l'homme.
        parsedData:
          type: object
          description: >-
            Charge utile structurée derrière le résumé, lorsque disponible — par
            exemple des métadonnées d'échange avec `protocol`, `kind`, montants
            et mints. La forme varie selon le type de résumé et le protocole.
          nullable: true
          additionalProperties: true
    ParsedInstruction:
      type: object
      description: Instruction de premier niveau ou interne analysée.
      properties:
        instructionIndex:
          type: integer
          description: Indice d'instruction de premier niveau.
        innerInstructionIndex:
          type: integer
          description: >-
            Indice d'instruction interne dans l'instruction de premier niveau,
            lorsque applicable.
          nullable: true
        stackHeight:
          type: integer
          description: Hauteur de la pile lorsque disponible.
          nullable: true
        programId:
          type: string
          description: ID du programme qui a exécuté l'instruction.
        rawAccounts:
          type: array
          description: >-
            Clés publiques de compte brutes résolues à partir des indices de
            compte d'instruction.
          items:
            type: string
        rawData:
          type: string
          description: Données brutes de l'instruction.
        summary:
          allOf:
            - $ref: '#/components/schemas/ParsedSummary'
          description: Résumé au niveau de l'instruction, lorsque disponible.
          nullable: true
        programName:
          type: string
          description: Nom de programme reconnu par le parseur, lorsque disponible.
          nullable: true
        instructionName:
          type: string
          description: Nom de l'instruction décodée, lorsque disponible.
          nullable: true
        decoded:
          allOf:
            - $ref: '#/components/schemas/DecodedInstruction'
          description: >-
            Arguments et comptes nommés décodés, lorsque le déchiffrement
            réussit.
          nullable: true
    DecodedInstruction:
      type: object
      description: Arguments et comptes nommés d'instruction décodée.
      properties:
        args:
          type: object
          description: >-
            Arguments décodés de l'instruction. Les noms et formes des arguments
            dépendent de l'instruction.
          additionalProperties: true
        accounts:
          type: array
          description: Comptes d'instruction décodés avec des noms reconnus par le parseur.
          items:
            $ref: '#/components/schemas/DecodedAccount'
    DecodedAccount:
      type: object
      description: Compte nommé utilisé par une instruction décodée.
      properties:
        name:
          type: string
          description: Nom de compte reconnu par le parseur.
        pubkey:
          type: string
          description: Clé publique du compte.
        isSigner:
          type: boolean
          description: Indique si le compte a signé la transaction.
        isWritable:
          type: boolean
          description: Indique si le compte était modifiable pour l'instruction.
  responses:
    InternalError:
      description: >-
        La requête a échoué sur le serveur, par exemple parce qu'une transaction
        stockée dans la plage demandée n'a pas pu être décodée. Toute la requête
        échoue ; aucun résultat partiel n'est renvoyé.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            default:
              value:
                error: erreur interne du serveur
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key

````

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