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

# Recherche d'actifs Solana : Trouver des NFT, des jetons et des actifs compressés

> Utilisez le point de terminaison searchAssets pour découvrir des NFT, des actifs compressés, et des jetons fongibles sur Solana, avec des filtres avancés, un tri et une pagination.

## Aperçu

`searchAssets` est la méthode de lecture la plus flexible dans l'API DAS. Elle retourne les actifs correspondant à une combinaison de filtres — propriétaire, regroupement de collection, type de jeton et attributs — en un seul appel paginé. Utilisez-la dès que vous avez besoin de plus qu'un seul actif ou d'une simple liste par propriétaire.

`tokenType` est optionnel. Lorsqu'il est omis, `searchAssets` retourne uniquement des NFT réguliers et compressés — pas de jetons fongibles. Pour inclure des jetons fongibles, définissez `tokenType` (par exemple, `"fungible"` ou `"all"`). Les valeurs acceptées sont `fungible`, `nonFungible`, `regularNft`, `compressedNft` et `all`.

## Quand l'utiliser

Utilisez `searchAssets` lorsque vous :

* Filtrez les actifs d'un portefeuille aux seuls jetons fongibles ou aux seuls NFT
* Listez les actifs qu'un portefeuille possède dans une collection spécifique
* Découvrez en masse des NFT compressés
* Construisez un défilement infini sur de grands ensembles de résultats avec une pagination par curseur
* Filtrez les actifs MPL Core par statut d'agent ou signataire

Pour un seul actif, utilisez [`getAsset`](/docs/fr/api-reference/das/getasset) ; pour une liste simple de portefeuille, utilisez [`getAssetsByOwner`](/docs/fr/api-reference/das/getassetsbyowner).

<Card title="Référence de l'API" horizontal icon="code" href="/docs/fr/api-reference/das/searchassets">
  Voir la documentation détaillée pour searchAssets
</Card>

## Démarrage rapide

```typescript theme={"system"}
// Replace YOUR_API_KEY with your Helius API key
const url = `https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY`;

async function searchAssets(params) {
  const body = {
    jsonrpc: "2.0",
    id: "search-assets-example",
    method: "searchAssets",
    params,
  };
  const res = await fetch(url, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(body),
  });
  if (!res.ok) {
    throw new Error(`${res.status} ${res.statusText}`);
  }
  const { result } = await res.json();
  return result;
}

// Example: fetch first 50 compressed NFTs in a wallet
searchAssets({
  ownerAddress: "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
  tokenType: "compressedNft",
  limit: 50,
}).then(console.log);
```

## Choisir un tokenType

`tokenType` est optionnel et spécifie **quel type d'actifs** apparaissent dans la réponse. Lorsqu'il est omis, `searchAssets` retourne uniquement des NFT réguliers et compressés — définissez `tokenType` pour inclure des jetons fongibles.

<ParamField body="tokenType" type="string">
  Valeurs acceptées : `fungible`, `nonFungible`, `regularNft`, `compressedNft`, `all`. Par défaut, retourne des NFT réguliers et compressés lorsqu'il est omis.
</ParamField>

| tokenType       | Ce que vous obtenez                    | Cas d'utilisation typique                       |
| --------------- | -------------------------------------- | ----------------------------------------------- |
| `fungible`      | Jetons SPL et Token-2022 uniquement    | Soldes de portefeuille, accès par jetons        |
| `nonFungible`   | Tous les NFT (compressés et réguliers) | Aperçu de portefeuille                          |
| `regularNft`    | Legacy et pNFT (non compressés)        | Annonces de marché                              |
| `compressedNft` | Seulement cNFT                         | Mises en circulation massives ultra-économiques |
| `all`           | Tout (jetons et NFT)                   | Découverte exhaustive                           |

## Pagination et tri

Les portefeuilles Solana peuvent posséder des milliers d'actifs, donc une pagination efficace est importante :

* **Page / limite** — pagination classique (`page` commence à **1**). Utile pour les vues statiques.
* **Curseur** — passez `before` ou `after` des valeurs de la réponse précédente pour un défilement infini rapide.

```json5 sortBy theme={"system"}
"sortBy": {
  "sortBy": "created",      // created | recent_action | updated | none
  "sortDirection": "desc"   // asc | desc
}
```

Pour des stratégies complètes de pagination par page/limite et par curseur, y compris l'interrogation parallèle avec clés, consultez le [guide de pagination](/docs/fr/das/pagination).

## Options d'affichage

Ces indicateurs **ajoutent des métadonnées** ; ils ne modifient jamais les actifs retournés.

| Indicateur               | Effet                                                   |
| ------------------------ | ------------------------------------------------------- |
| `showNativeBalance`      | Inclut le solde SOL du portefeuille                     |
| `showCollectionMetadata` | Ajoute des données JSON au niveau de la collection      |
| `showGrandTotal`         | Retourne le nombre total de correspondances (plus lent) |

```json5 options theme={"system"}
"options": {
  "showNativeBalance": true,
  "showCollectionMetadata": true,
  "showGrandTotal": true
}
```

## Agents MPL Core, signataires d'actifs et groupes MIP-11

Les actifs MPL Core peuvent exposer des métadonnées d'**identité d'agent** et de **signataire d'actif**, et les actifs ou collections peuvent inclure un **`groups` plugin** (MIP-11) décrivant l'appartenance à un groupe. Les mêmes champs optionnels apparaissent sur chaque méthode de retour d'actif DAS (`getAsset`, `getAssetBatch`, `getAssetsByOwner`, `getAssetsByGroup`, `getAssetsByCreator`, `getAssetsByAuthority`, et chaque élément dans `searchAssets`).

Utilisez `searchAssets` pour filtrer par statut d'agent ou adresses :

| Paramètre     | Type    | But                                                   |
| ------------- | ------- | ----------------------------------------------------- |
| `isAgent`     | booléen | Uniquement les actifs avec une identité d'agent       |
| `agentToken`  | chaîne  | Correspondance de la frappe de jeton d'agent (base58) |
| `assetSigner` | chaîne  | Correspondance de signataire d'actif PDA (base58)     |

Vous pouvez également définir `interface` à `MplCoreAsset`, `MplCoreCollection`, ou `MplCoreGroup` pour une découverte spécifique à MPL Core.

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "searchAssets",
  "params": {
    "ownerAddress": "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
    "tokenType": "all",
    "isAgent": true,
    "page": 1,
    "limit": 10
  }
}
```

Les champs de réponse `is_agent`, `agent_token`, et `asset_signer` sont **omis lorsque non applicables** (par exemple, `is_agent` est omis lorsqu'il est faux). Voir la [référence API searchAssets](/docs/fr/api-reference/das/searchassets) pour les schémas complets.

## Exemples

Le premier exemple montre le wrapper complet `fetch`. Les exemples restants suivent le même modèle et sont réduits — développez-les pour le corps de la demande.

### Rechercher tous les jetons fongibles dans un portefeuille

```typescript theme={"system"}
const url = `https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY`

const searchAssets = async () => {
  const response = await fetch(url, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      jsonrpc: '2.0',
      id: 'my-id',
      method: 'searchAssets',
      params: {
        ownerAddress: '86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY',
        tokenType: 'fungible',
      },
    }),
  });
  const { result } = await response.json();
  console.log("Search Assets: ", result);
};
searchAssets();
```

<Accordion title="Rechercher des jetons fongibles avec solde natif et informations sur les jetons">
  ```typescript theme={"system"}
  const url = `https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY`

  const searchAssetsTokenInfo = async () => {
      const response = await fetch(url, {
          method: 'POST',
          headers: {
              'Content-Type': 'application/json',
          },
          body: JSON.stringify({
              jsonrpc: '2.0',
              id: 'my-id',
              method: 'searchAssets',
              params: {
                  ownerAddress: '86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY',
                  tokenType: 'fungible',
                  options: {
                      showNativeBalance: true,
                  },
              },
          }),
      });

      const { result } = await response.json();

      result.items.forEach(item => {
        console.log(item.token_info);
      });

      console.log("Native Balance: ", result.nativeBalance);
  };

  searchAssetsTokenInfo();
  ```
</Accordion>

<Accordion title="Rechercher des NFT Drip détenus par vibhu.sol">
  ```typescript theme={"system"}
  const url = `https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY`

  const searchAssetsDrip = async () => {
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        jsonrpc: '2.0',
        id: 'my-id',
        method: 'searchAssets',
        params: {
          ownerAddress: 'BAVjpySHMMGDpq3whU7qaqCCRE8ksCeGwxa53Qv2i8jS',
          grouping: ["collection", "DRiP2Pn2K6fuMLKQmt5rZWyHiUZ6WK3GChEySUpHSS4x"],
          page: 1,
          limit: 1000
        },
      }),
    });
    const { result } = await response.json();
    console.log("Drip Haus Assets: ", result);
  };
  searchAssetsDrip();
  ```
</Accordion>

<Accordion title="Rechercher des actifs compressés dans un portefeuille">
  ```typescript theme={"system"}
  const url = `https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY`

  const searchAssetsCompressed = async () => {
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        jsonrpc: '2.0',
        id: 'my-id',
        method: 'searchAssets',
        params: {
          ownerAddress: '2k5AXX4guW9XwRQ1AKCpAuUqgWDpQpwFfpVFh3hnm2Ha',
          compressed: true,
        },
      }),
    });
    const { result } = await response.json();
    console.log("Search Assets: ", result);
  };
  searchAssetsCompressed();
  ```
</Accordion>

## Prochaines étapes

<CardGroup cols={3}>
  <Card title="Pagination" icon="list" href="/docs/fr/das/pagination">
    Pagination par page et par clés pour de grands ensembles de résultats.
  </Card>

  <Card title="Extension de jeton fongible" icon="coins" href="/docs/fr/das/fungible-token-extension">
    Comment tokenType, soldes et prix apparaissent dans les résultats.
  </Card>

  <Card title="référence searchAssets" icon="code" href="/docs/fr/api-reference/das/searchassets">
    Schémas de requêtes et réponses complets.
  </Card>
</CardGroup>
