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

# Bet By Batch

> This API is **used exclusively for Multiplayer games** to place multiple bets in a single request. It is typically called when users place their bets at the start of a crash round.

```http theme={null}
  POST  /transaction/bet-batch
```

## Functionality

* **Deducts the bet amount**: The specified bet amount is subtracted from each player's balance.
* **Batch processing**: Optimized to handle high-volume betting during peak times.

Finally, it returns the updated balance, reflecting the result of the win.

## Headers

<ParamField header="x-api-key" type="string" required>
  A unique identifier associated with operator calling API.
</ParamField>

<ParamField header="x-signature" type="string" required>
  A SHA256 HMAC signature generated using the request body and timestamp.
  Format: HMAC\_SHA256(JSON.stringify(data) + '|' + timestamp), signed using the
  provided secret key.
</ParamField>

<ParamField header="x-timestamp" type="string" required>
  An Unix timestamp (milliseconds) when the request was sent. Ensure the same
  value is used in signature generation.
</ParamField>

<ParamField header="content-type" type="string" required>
  Must be set to `application/json`
</ParamField>

## Request Body

<ParamField body="transactions" type="array" required>
  <Expandable title="properties">
    <ParamField body="transactionId" type="string" required>
      Unique identifier for the transaction.
    </ParamField>

    <ParamField body="sessionId" type="string" required>
      Unique identifier for the game session.
    </ParamField>

    <ParamField body="roundId" type="string" required>
      Unique identifier for the game round.
    </ParamField>

    <ParamField body="playerId" type="string" required>
      Unique identifier for the player.
    </ParamField>

    <ParamField body="gameId" type="string" required>
      Unique identifier for the game.
    </ParamField>

    <ParamField body="currency" type="string" required>
      Player's current session currency code.
    </ParamField>

    <ParamField body="amount" type="number" required>
      Bet amount placed by the player.

      <Note>
        To maintain precision and avoid floating-point errors, the bet field is processed as an integer value by multiplying the actual amount by `100000`.

        For example, a bet of `12.34567` will be represented as `1234567` in the API.
      </Note>
    </ParamField>

    <ParamField body="autoWithDrawal" type="boolean" required>
      Whether the player opted for automatic withdrawal at a specific multiplier.
    </ParamField>

    <ParamField body="index" type="number" required>
      Index of the transaction.
    </ParamField>
  </Expandable>
</ParamField>

## Response

<ResponseField name="status" type="string" required>
  Code indicates status of the request weather it is succeed or failed. We have
  listed error codes <a href="/introduction#error-codes">here</a>
</ResponseField>

<ResponseField name="data" type="Data Array">
  <Expandable title="properties">
    <ResponseField name="status" type="string" required>
      Status of the individual transaction.
    </ResponseField>

    <ResponseField name="transactionId" type="string" required>
      Unique identifier for the transaction.
    </ResponseField>

    <ResponseField name="sessionId" type="string" required>
      Unique identifier for the session.
    </ResponseField>

    <ResponseField name="roundId" type="string" required>
      Unique identifier for the game round.
    </ResponseField>

    <ResponseField name="playerId" type="string" required>
      Unique identifier for the player.
    </ResponseField>

    <ResponseField name="currency" type="string" required>
      Player's current session currency code.
    </ResponseField>

    <ResponseField name="balance" type="number" required>
      Player's balance after the transaction.

      <Note>
        To maintain precision and avoid floating-point errors, the balance field is processed as an integer value by multiplying the actual amount by `100000`.

        For example, a balance of `12.34567` will be represented as `1234567` in the API.
      </Note>
    </ResponseField>

    <ResponseField name="index" type="number" required>
      Index of the transaction.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash Shell theme={null}
  curl --request POST \
    --url 'https://partner-platform-url/transaction/bet-batch' \
    --header 'content-type: application/json' \
    --header 'x-api-key: <x-api-key>' \
    --header 'x-signature: <x-signature>' \
    --header 'x-timestamp: <x-timestamp>' \
    --data '{
      "transactions": [
        {
          "transactionId": "dd96bda3-9990-4aed-9679-f451a4b82ac4",
          "sessionId": "f1dfc865-584c-4cba-a175-06172b2a41141731504451691",
          "roundId": "817e22b4-b030-468b-964e-62b9a7343050-1753428290674",
          "playerId": "18865671",
          "gameId": "G1720761376617",
          "currency": "EUR",
          "amount": 2500000,
          "autoWithDrawal": true,
          "index": 0
        }
      ]
  }'
  ```

  ```javascript NodeJS theme={null}
  const axios = require("axios");

  const url = "https://partner-platform-url/transaction/bet-batch";
  const headers = {
    "content-type": "application/json",
    "x-api-key": "<x-api-key>",
    "x-signature": "<x-signature>",
    "x-timestamp": "<x-timestamp>",
  };
  const data = {
    transactions: [
      {
        transactionId: "dd96bda3-9990-4aed-9679-f451a4b82ac4",
        sessionId: "f1dfc865-584c-4cba-a175-06172b2a41141731504451691",
        roundId: "817e22b4-b030-468b-964e-62b9a7343050-1753428290674",
        playerId: "18865671",
        gameId: "G1720761376617",
        currency: "EUR",
        amount: 2500000,
        autoWithDrawal: true,
        index: 0,
      },
    ],
  };

  axios
    .post(url, data, { headers })
    .then((response) => console.log(response.data))
    .catch((error) => console.error(error));
  ```

  ```python Python theme={null}
  import requests

  url = "https://partner-platform-url/transaction/bet-batch"
  headers = {
      "content-type": "<content-type>",
      "x-api-key": "<x-api-key>",
      "x-signature": "<x-signature>",
      "x-timestamp": "<x-timestamp>"
  }
  data = {
      "transactions": [
          {
              "transactionId": "dd96bda3-9990-4aed-9679-f451a4b82ac4",
              "sessionId": "f1dfc865-584c-4cba-a175-06172b2a41141731504451691",
              "roundId": "817e22b4-b030-468b-964e-62b9a7343050-1753428290674",
              "playerId": "18865671",
              "gameId": "G1720761376617",
              "currency": "EUR",
              "amount": 2500000,
              "autoWithDrawal": True,
              "index":0
          }
      ]
  }

  response = requests.post(url, headers=headers, json=data)
  print(response.json())

  ```

  ```php PHP theme={null}
  <?php
  $curl = curl_init();

  curl_setopt_array($curl, [
    CURLOPT_URL => "https://partner-platform-url/transaction/bet-batch",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
      "content-type: <content-type>",
      "x-api-key: <x-api-key>",
      "x-signature: <x-signature>",
      "x-timestamp: <x-timestamp>"
    ],
    CURLOPT_POSTFIELDS => json_encode([
      "transactions" => [
        [
          "transactionId" => "dd96bda3-9990-4aed-9679-f451a4b82ac4",
          "sessionId" => "f1dfc865-584c-4cba-a175-06172b2a41141731504451691",
          "roundId" => "817e22b4-b030-468b-964e-62b9a7343050-1753428290674",
          "playerId" => "18865671",
          "gameId" => "G1720761376617",
          "currency" => "EUR",
          "amount" => 2500000,
          "autoWithDrawal" => true,
          "index" => 0
        ]
      ]
    ]),
  ]);

  $response = curl_exec($curl);
  curl_close($curl);

  echo $response;
  ?>

  ```
</RequestExample>

<ResponseExample>
  ```json SUCCESS theme={null}
  {
      "status": "RS_OK",
      "data": [
          {
              "status": "RS_OK",
              "transactionId": "dd96bda3-9990-4aed-9679-f451a4b82ac4",
              "sessionId": "f1dfc865-584c-4cba-a175-06172b2a41141731504451691",
              "roundId": "817e22b4-b030-468b-964e-62b9a7343050-1753428290674",
              "playerId": "18865671",
              "currency": "EUR",
              "balance": 50000000,
              "index": 0
          }
      ]
  }
  ```

  ```json FAILURE theme={null}
  {
    "status": "RS_ERROR",
    "message": "Oops! Something went wrong. Please refresh the page or try again in a moment"
  }
  ```
</ResponseExample>
