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

# Broadcasting

> Use broadcast when the user or backend already signed a MultiversX transaction and pays gas.

Use `broadcast` to send fully signed MultiversX transactions through the Relayer without XOXNO co-signing or paying gas.

## Use This When

| Need                                        | Action                                                     |
| ------------------------------------------- | ---------------------------------------------------------- |
| User signed and pays gas                    | Send `broadcast`.                                          |
| Backend signer produced signed transactions | Send `broadcast` with `tx` or `txs`.                       |
| You need status after submission            | Subscribe to `tx-status/{hash}` before or after broadcast. |

## Do Not Use This When

| Need                             | Use                                           |
| -------------------------------- | --------------------------------------------- |
| XOXNO co-signs and pays gas      | [Relayer V3](/relayer/transaction-relaying)   |
| Transaction is not signed yet    | Wallet or signing SDK first                   |
| You only need RPC status polling | [Gateway transactions](/gateway/transactions) |

## Entry Points

| Transport | Endpoint                                      | Payload                       |
| --------- | --------------------------------------------- | ----------------------------- |
| WebSocket | `wss://relayer.xoxno.com/ws`                  | `broadcast` control message   |
| REST      | `POST https://relayer.xoxno.com/v1/broadcast` | JSON body with `transactions` |

## Flow

<Steps>
  <Step title="Build and sign">
    Construct the MultiversX transaction and sign it with the sender wallet or backend signer.
  </Step>

  <Step title="Subscribe to status">
    Subscribe to `tx-status/{hash}` when the hash is known, or track returned hashes after broadcast.
  </Step>

  <Step title="Broadcast">
    Send one transaction in `tx` or a batch in `txs` over WebSocket, or call `POST /v1/broadcast`.
  </Step>

  <Step title="Verify">
    Treat `status: completed` as Relayer acceptance. Wait for a `txStatus` event or Gateway status for chain finality.
  </Step>
</Steps>

## Example Payload

```json theme={"system"}
{
  "action": "broadcast",
  "requestId": "tx-001",
  "tx": {
    "nonce": 42,
    "value": "0",
    "receiver": "erd1...",
    "sender": "erd1...",
    "gasPrice": 1000000000,
    "gasLimit": 50000,
    "data": "",
    "chainID": "1",
    "version": 2,
    "signature": "<hex-signature>"
  }
}
```

The payload above is an example. Replace placeholders with a real signed transaction.

## Edge Cases

| Case                        | Behavior                                              | Fix                                                          |
| --------------------------- | ----------------------------------------------------- | ------------------------------------------------------------ |
| `invalid signature`         | The signature does not match the transaction payload. | Rebuild and sign again.                                      |
| `nonce too low`             | Sender nonce already advanced.                        | Re-read nonce and sign a new transaction.                    |
| Batch with partial failures | Relayer can return `partial` with per-index reasons.  | Retry only failed transactions after rebuilding nonce order. |
| Accepted but not finalized  | Broadcast acknowledgment is not finality.             | Track `txStatus` or Gateway status.                          |

## Related Pages

* [Quickstart](/relayer/quickstart)
* [WebSocket broadcast action](/api-reference/ws/broadcast)
* [REST broadcast endpoint](/api-reference/overview)
* [Transaction status tracking](/relayer/tx-status-tracking)
