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

# broadcast

> Submit pre-signed transactions for P2P broadcast via the XOXNO Relayer WebSocket.

Broadcast one or more fully signed transactions to MultiversX validators via the P2P gossipsub network. The Relayer forwards transactions without modifying or co-signing them.

## Endpoint

`wss://relayer.xoxno.com/ws`

## Body

<ParamField body="action" type="string" required>
  Must be `"broadcast"`.
</ParamField>

<ParamField body="requestId" type="string">
  Echoed back in the response for client-side correlation. Use a unique value per request to match responses across concurrent operations.
</ParamField>

<ParamField body="tx" type="object" required>
  A single signed transaction object.

  <Expandable title="properties" defaultOpen>
    <ParamField body="nonce" type="integer" required>
      Sender's current account nonce.
    </ParamField>

    <ParamField body="value" type="string" required>
      EGLD value in atomic units (1 EGLD = `"1000000000000000000"`). Use `"0"` for ESDT transfers.
    </ParamField>

    <ParamField body="receiver" type="string" required>
      Receiver address in bech32 format (`erd1...`).
    </ParamField>

    <ParamField body="sender" type="string" required>
      Sender address in bech32 format (`erd1...`).
    </ParamField>

    <ParamField body="gasPrice" type="integer" required>
      Gas price in atomic units. Minimum: `1000000000`.
    </ParamField>

    <ParamField body="gasLimit" type="integer" required>
      Maximum gas units for the transaction.
    </ParamField>

    <ParamField body="data" type="string">
      Base64-encoded transaction payload.
    </ParamField>

    <ParamField body="chainID" type="string" required>
      `"1"` for mainnet, `"D"` for devnet.
    </ParamField>

    <ParamField body="version" type="integer" required>
      Transaction version. Use `2`.
    </ParamField>

    <ParamField body="signature" type="string" required>
      Hex-encoded Ed25519 signature of the serialized transaction.
    </ParamField>
  </Expandable>
</ParamField>

## Response

<ResponseField name="action" type="string">
  `"broadcast"`
</ResponseField>

<ResponseField name="requestId" type="string">
  Echoed from the request.
</ResponseField>

<ResponseField name="status" type="string">
  `"completed"` when all transactions succeed, `"partial"` when some fail, `"failed"` when all fail.
</ResponseField>

<ResponseField name="hashes" type="string[]">
  Transaction hashes for successfully broadcast transactions.
</ResponseField>

<ResponseField name="failed" type="object[]">
  Failures, each with `index` and `reason`.

  <Expandable title="properties">
    <ResponseField name="index" type="integer">
      Zero-based index of the failed transaction in the batch.
    </ResponseField>

    <ResponseField name="reason" type="string">
      Error description. See the [error reference](/relayer/error-reference) for all values.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```json Request theme={"system"}
  {
    "action": "broadcast",
    "requestId": "tx-001",
    "tx": {
      "nonce": 42,
      "value": "1000000000000000000",
      "receiver": "erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th",
      "sender": "erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx",
      "gasPrice": 1000000000,
      "gasLimit": 50000,
      "chainID": "1",
      "version": 2,
      "signature": "a1b2c3d4..."
    }
  }
  ```
</RequestExample>

<ResponseExample>
  ```json Success theme={"system"}
  {
    "action": "broadcast",
    "requestId": "tx-001",
    "status": "completed",
    "hashes": [
      "d5e8c9a1b3f7..."
    ],
    "failed": []
  }
  ```

  ```json Partial failure theme={"system"}
  {
    "action": "broadcast",
    "requestId": "tx-001",
    "status": "partial",
    "hashes": ["d5e8c9a1b3f7..."],
    "failed": [
      { "index": 1, "reason": "invalid signature" }
    ]
  }
  ```
</ResponseExample>
