Pre-Req: You have the body variable with a valid signature (see prior pages).
Simulating
A good practice to have is to simulate the transaction before you actually broadcast and update the fee from the transaction context with up to date values.
To do this, you can use
https://api.bitbadges.io/api/v0/simulate
or
http://URL:1317/cosmos/tx/v1beta1/simulate
This will return the gas used on a dry run of the transaction and any errors if it finds any. You can leave all signature fields empty because simulations do not check any signatures.
Note this tutorial is slightly out of order for clarity, the simulation step should typically be done before the user signs, so they only have to sign the final Msg with the up to date gas.