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

# Placer un pari

> Une présentation concrète du flux d'intention de pari : trouver un marché et une issue, récupérer un Payment XRP non signé avec les cotes projetées, signer dans votre propre portefeuille, puis soumettre au XRPL.

Placer un pari sur counsel revient à envoyer un Payment XRP natif. Vous l'envoyez vers le compte pool d'un marché, avec le `DestinationTag` réglé sur l'indice de l'issue et le `SourceTag` réglé sur le tag d'attribution de counsel. counsel construit le Payment non signé et vous montre les cotes projetées. Vous le signez dans votre propre portefeuille et le soumettez. Il n'y a pas d'étape de dépôt et aucune clé côté counsel dans le chemin. Le flux est non custodial de bout en bout.

Cette page parcourt le chemin développeur canonique : `GET /markets` pour trouver un marché et une issue, puis `GET /markets/:id/bet-intent` pour obtenir un Payment non signé ainsi que les cotes projetées après votre mise, puis signer et soumettre.

<Steps>
  <Step title="Trouver un marché et une issue">
    Listez les marchés ouverts et choisissez-en un. Chaque marché porte ses issues ; l'indice de l'issue est ce qui va dans le `DestinationTag`.

    <CodeGroup>
      ```bash curl theme={null}
      curl https://api.counsel.markets/markets
      ```

      ```ts counsel-js theme={null}
      import { Counsel } from "counsel-js";

      const counsel = new Counsel({ baseUrl: "https://counsel.markets" });
      const { markets } = await counsel.markets();

      const market = markets[0];
      console.log(market.id, market.outcomes);
      ```
    </CodeGroup>

    Vous pouvez aussi récupérer un marché unique par son id avec `GET /markets/:id`.
  </Step>

  <Step title="Récupérer une intention de pari">
    Appelez `GET /markets/:id/bet-intent` avec votre `account`, l'indice `outcome` et le montant `amount` en XRP. La réponse vous fournit un Payment XRPL non signé prêt à être signé, ainsi que les cotes projetées pour cette issue une fois votre mise ajoutée au pool.

    <CodeGroup>
      ```bash curl theme={null}
      curl "https://api.counsel.markets/markets/MARKET_ID/bet-intent?account=rYOUR_ADDRESS&outcome=0&amount=5"
      ```

      ```ts counsel-js theme={null}
      // counsel-js wraps fetch-intent, sign, and submit into one call.
      // To inspect the intent first, fetch it on its own:
      const intent = await counsel.betIntent({
        marketId: market.id,
        account: process.env.BOT_ADDRESS,
        outcome: 0,
        amount: 5,
      });

      console.log(intent.payment);            // unsigned XRPL Payment
      console.log(intent.projected_odds);     // projected odds after your stake
      ```
    </CodeGroup>

    <ParamField query="account" type="string" required>
      L'adresse XRPL qui signera et enverra le pari. Utilisée pour adresser le Payment non signé.
    </ParamField>

    <ParamField query="outcome" type="integer" required>
      L'indice de l'issue. Il devient le `DestinationTag` du Payment.
    </ParamField>

    <ParamField query="amount" type="number" required>
      Votre mise en XRP.
    </ParamField>

    Le Payment non signé est adressé au compte pool du marché, avec le `DestinationTag` réglé sur l'indice de votre issue et le `SourceTag` réglé sur le tag d'attribution de counsel.

    <Note>
      Les cotes projetées sont indicatives. counsel est parimutuel, donc chaque pari ultérieur de n'importe quel participant déplace la ligne jusqu'au `bet_cutoff`. La répartition est calculée à partir de l'état réel du pool à la clôture, et non à partir du chiffre affiché au moment où vous avez signé. Voir [Cotes et payouts](/concepts/fees-and-payouts).
    </Note>
  </Step>

  <Step title="Signer dans votre propre portefeuille">
    Signez le Payment non signé avec votre propre clé. counsel ne voit jamais votre secret. Dans l'application, c'est Xaman, GemWallet ou Crossmark ; pour un bot, c'est votre client qui signe avec sa propre seed.

    <Warning>
      Vérifiez le `Destination`, le `Amount`, le `DestinationTag` et le `SourceTag` avant de signer. Le `DestinationTag` correspond à l'issue sur laquelle vous pariez ; un tag erroné dirige votre mise vers un autre pool d'issue.
    </Warning>
  </Step>

  <Step title="Soumettre au XRPL">
    Soumettez le Payment signé au XRPL. Lorsqu'il est inclus dans un ledger validé, counsel le lit depuis l'historique des transactions du compte pool, dirige votre mise vers le pool d'issue désigné par le `DestinationTag`, et met à jour le tableau d'affichage des cotes.

    <CodeGroup>
      ```ts counsel-js theme={null}
      // placeBet does it all: fetch intent, sign with your key, submit.
      const hash = await counsel.placeBet(process.env.BOT_SEED, market.id, 0, 5);
      console.log("bet placed:", hash);
      ```
    </CodeGroup>
  </Step>
</Steps>

## Tout le flux avec counsel-js

`placeBet` condense les quatre étapes en un seul appel : il récupère l'intention non signée, la signe avec la seed que vous passez, et la soumet. La seed reste sur votre machine.

```ts theme={null}
import { Counsel } from "counsel-js";

const counsel = new Counsel({ baseUrl: "https://counsel.markets" });
const { markets } = await counsel.markets();

// fetch an unsigned bet intent, sign with your own key, submit
const hash = await counsel.placeBet(process.env.BOT_SEED, markets[0].id, 0, 5);
console.log("bet placed:", hash);
```

## Signature non custodiale

counsel construit le Payment mais ne le détient jamais. L'étape de signature se déroule entièrement dans votre portefeuille ou votre client, avec votre clé.

<CardGroup cols={2}>
  <Card title="counsel construit, vous signez">
    Le endpoint bet-intent renvoie un Payment non signé. La signature et la soumission vous appartiennent. counsel ne relaie ni ne proxie votre transaction signée.
  </Card>

  <Card title="Les pools sont en multisig">
    Les mises atterrissent dans des comptes propres à chaque marché, sécurisés par une SignerList multisig avec la clé maître désactivée. Aucune clé unique ne peut déplacer les fonds.
  </Card>

  <Card title="Tout est on-chain">
    Votre pari est un Payment taggé dans l'historique des transactions du compte pool. N'importe qui peut l'indexer et recalculer l'état du pool.
  </Card>

  <Card title="Les bots sont de premier ordre">
    Un bot est un client XRPL ordinaire : lire un marché, récupérer une intention non signée, signer avec sa propre clé, soumettre. Le même chemin que l'application.
  </Card>
</CardGroup>

## Suivre votre position

Une fois votre pari atterri, relisez-le par adresse.

<CodeGroup>
  ```bash curl theme={null}
  curl https://api.counsel.markets/accounts/rYOUR_ADDRESS/positions
  ```

  ```ts counsel-js theme={null}
  const { positions } = await counsel.positions(process.env.BOT_ADDRESS);
  console.log(positions);
  ```
</CodeGroup>

Si votre issue gagne, le Payment de payout arrive automatiquement à votre adresse après la résolution. Vous n'avez rien à réclamer ni à retirer. Si un pool est annulé (unilatéral, sans gagnant, événement annulé ou oracle obsolète), chaque mise est intégralement remboursée sans frais.

<Tip>
  Consultez la [Référence API](/api-reference) pour l'ensemble complet des endpoints en lecture seule, dont `/accounts/:address/feed`, `/accounts/:address/profile` et `/leaderboard`.
</Tip>
