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

# Sign and Broadcast Transaction

> Sign and broadcast Ethereum transactions built with the P2P.org Staking API.

To complete a staking or withdrawal operation on Ethereum, sign the unsigned transaction provided by the Staking API and broadcast it to the network.

<Steps>
  <Step title="Prepare the transaction">
    Retrieve an unsigned serialized transaction from the relevant API endpoint, e.g., `staking/direct/tx/deposit` or `staking/direct/tx/withdrawal`.
  </Step>

  <Step title="Sign the transaction">
    Use the [P2P Signer SDK](/docs/signer-sdk-overview) to sign the unsigned data following protocol specific configuration.
  </Step>

  <Step title="Send the transaction">
    Broadcast the signed transaction to the Ethereum network by making a POST request to `/api/v1/eth/transactions`.

    ```bash theme={null}
    curl --request POST \
      --url 'https://api-test.p2p.org/api/v1/eth/transactions' \
      --header 'accept: application/json' \
      --header 'authorization: Bearer <token>' \
      --header 'content-type: application/json' \
      --data '{
        "network": "hoodi",
        "signedTransaction": "0x02f9015483088bb081c7840198894a84754231e2830186a094917105cc314c12890d9c8224aee5af9574f871cf80b8e466792ba1000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000867b22616374696f6e223a227769746864726177222c227075626b657973223a5b223078613635633030373135663565303032636439366465326264376539626631613433333130653739376230303235306262303063393833363231316135366631333235646663393535633664326338636166313333303862343739643266333839225d7d0000000000000000000000000000000000000000000000000000c080a0260d1310fecca35e62ef3c01b47fabf7af78aad0a841b38f6850fa5d2102245fa009d0e72ab14e6dfc78740c752eeee7fb8aa0676e12f3059f30149ff762a0a040"
    }'
    ```

    * `network` — environment in which the transaction is processed.
    * `signedTransaction`— signed transaction which needs to be broadcast to the network.

    Example response:

    ```json theme={null}
    {
        "error": null,
        "result": {
            "broadcastedAt": "2026-02-05T07:12:35.851Z",
            "from": "0xeE6FFB3fEf95AdA9b4FA606C2Ef90A31D37b6AdB",
            "gas": {},
            "status": "pending",
            "to": "0x917105CC314C12890D9C8224Aee5aF9574F871cf",
            "transactionHash": "0xf94d480405cf5e45a5c4361321643084ef6b7db834938018f9ef99d0d9541b4d"
        }
    }
    ```

    * `broadcastedAt`— time of transaction being broadcasted.
    * `from`— sender address for this transaction.
    * `gas`— gas consumed to broadcast transaction.
    * `status`— transaction status: `pending`, `success`.
    * `to`— recipient address for this transaction.
    * `transactionHash`— hash of the transaction.
  </Step>
</Steps>


## Related topics

- [Getting Started](/docs/staking-ethereum.md)
- [Withdrawal](/docs/withdrawal-eth.md)
- [Staking API reference](/reference/eth-nodes-request-create.md)
