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

# Broadcast

The broadcast endpoint solves a different problem from buying energy directly.

With an energy order, you buy energy and then do what you like with it. With a broadcast, you hand SaveFee a transaction **you have already signed**, and SaveFee works out what that transaction costs to run, provisions it, and pushes the transaction to the TRON network for you. You never hold the resource, and you never have to size it yourself.

```
you sign the tx  →  SaveFee provisions the resource  →  SaveFee broadcasts  →  on-chain
```

One endpoint does it: **`POST /v1/broadcasts`**.

## What you can send

Any signed transaction with a single contract call. SaveFee reads it, decides which resource it needs, and provisions that:

| What you send                                                             | What SaveFee provisions |
| ------------------------------------------------------------------------- | ----------------------- |
| A contract call — a TRC20 transfer, an approval, any single-contract call | ENERGY                  |
| A transaction whose cost is bandwidth rather than energy                  | BANDWIDTH               |

A USDT `transfer` is the most common case, so it is what the examples use — but nothing in the flow is specific to USDT.

SaveFee never sees your private key. Only the signed transaction crosses the wire.

| Page                        | What it covers                                             |
| --------------------------- | ---------------------------------------------------------- |
| **Overview and flow**       | How the flow works and what it costs.                      |
| **Broadcast a transaction** | Preparing and submitting a signed transaction.             |
| **Track and troubleshoot**  | Broadcast lifecycle, and every rejection reason explained. |

{% hint style="warning" %}
Set the transaction expiration to roughly 600 seconds before signing. TronWeb's default is about 60 seconds, which does not leave SaveFee a window to provision the resource *and then* broadcast.
{% endhint %}
