> For the complete documentation index, see [llms.txt](https://mevzone.gitbook.io/mevzone/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mevzone.gitbook.io/mevzone/getting-started/sending-bundles.md).

# Sending Bundles

A “bundle” is an ordered list of signed transactions that a searcher (or user) wants included in a block together, alongside a specific bid. Below are examples in several programming languages showing how to send a bundle to the Mev Zone system.

{% tabs %}
{% tab title="JavaScript" %}

```javascript
import axios from "axios";

async function sendBundle() {
  const bundle = [
    "0xf86c...2b", // replace with real signed tx
    "0xf86c...1c", // replace with real signed tx
  ];

  const requestBody = {
    jsonrpc: "2.0",
    id: "1",
    method: "eth_sendBundle",
    params: [
      {
        txs: bundle,                         // List of signed raw transactions
        maxBlockNumber: 123456789,           // Max block number for bundle validity
        minTimestamp: 123456789,             // Min Unix timestamp (seconds)
        maxTimestamp: 1234567898,            // Max Unix timestamp (seconds)
        revertingTxHashes: ["0x1234", "0x1234"], // Hashes allowed to revert
      },
    ],
  };

  try {
    const { data } = await axios.post(
      "https://builder.mev.zone/ext/bc/C/rpc",
      requestBody,
      { headers: { "Content-Type": "application/json" } }
    );
    console.log("Bundle sent, response:", data);
  } catch (err) {
    console.error("Error sending bundle:", err);
  }
}

sendBundle();

```

{% endtab %}

{% tab title="Python" %}

```python
import requests

def send_bundle():
    bundle = [
        "0xf86c...2b",  # replace with real signed tx
        "0xf86c...1c",  # replace with real signed tx
    ]

    payload = {
        "jsonrpc": "2.0",
        "id": "1",
        "method": "eth_sendBundle",
        "params": [
            {
                "txs": bundle,
                "maxBlockNumber": 123456789,
                "minTimestamp": 123456789,
                "maxTimestamp": 1234567898,
                "revertingTxHashes": ["0x1234", "0x1234"],
            }
        ],
    }

    resp = requests.post(
        "https://builder.mev.zone/ext/bc/C/rpc",
        json=payload,
        headers={"Content-Type": "application/json"},
        timeout=30,
    )
    resp.raise_for_status()
    print("Bundle sent, response:", resp.json())

if __name__ == "__main__":
    send_bundle()

```

{% endtab %}

{% tab title="Rust" %}

```rust
use reqwest::blocking::Client;
use serde_json::json;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let bundle = vec![
        "0xf86c...2b", // replace with real signed tx
        "0xf86c...1c", // replace with real signed tx
    ];

    let payload = json!({
        "jsonrpc": "2.0",
        "id": "1",
        "method": "eth_sendBundle",
        "params": [{
            "txs": bundle,
            "maxBlockNumber": 123456789,
            "minTimestamp": 123456789,
            "maxTimestamp": 1234567898,
            "revertingTxHashes": ["0x1234", "0x1234"]
        }]
    });

    let client = Client::new();
    let res = client
        .post("https://builder.mev.zone/ext/bc/C/rpc")
        .json(&payload)
        .send()?
        .text()?;

    println!("Bundle sent, response: {}", res);
    Ok(())
}

```

}
{% endtab %}
{% endtabs %}
