Skip to main content

Transaction Status API

Transactions that you submit to Flashbots Protect won't be observable in the public mempool. However, you can use our status API to check the status of your transactions. The URL for doing so is: https://protect.flashbots.net/tx/YOUR_TX_HASH_HERE, and you can also use Etherscan as you normally would for transactions. They will show the status of your transaction from the status API as well.

The Transaction Status API is also available on test networks. Below is a table of URLs for accessing the API across different networks:

NetworkURL
Mainnethttps://protect.flashbots.net/tx/
Goerlihttps://protect-goerli.flashbots.net/tx/
Sepoliahttps://protect-sepolia.flashbots.net/tx/
Holeskyhttps://protect-holesky.flashbots.net/tx/

In turn you will receive a JSON response that looks like the following:

{
"status": "PENDING",
"hash": "YOUR_TX_HASH",
"maxBlockNumber": 13543898,
"transaction": {
"from": "",
"to": "",
"gasLimit": "",
"maxFeePerGas": "",
"maxPriorityFeePerGas": "",
"nonce": "",
"value": ""
},
"fastMode": true, // for backwards compatibility; may be removed in a future version
"seenInMempool": false,
"simError": "",
"revertReason": "",
"isRevert": false
}

Below is a table of status codes that can be returned:

Status CodeDescription
PENDINGThe transaction was received and is currently being processed by the block builder
INCLUDEDThe transaction was included on-chain
FAILEDThe transaction was submitted for 25 blocks and failed to be included on-chain
CANCELLEDThe transaction was cancelled by the user and not included on-chain
UNKNOWNThe transaction was not received

Privacy

The transaction fields are disclosed only for transactions with an INCLUDED status to maintain privacy for trades that are pending, failed, or cancelled. These fields will remain empty for transactions with PENDING, FAILED, UNKNOWN, or CANCELLED statuses.

For instance, once a transaction is included, the JSON response will be populated with data for all fields:

{
"status": "INCLUDED",
"hash": "YOUR_TX_HASH",
"maxBlockNumber": 13543898,
"transaction": {
"from": "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",
"to": "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",
"gasLimit": "21000",
"maxFeePerGas": "300",
"maxPriorityFeePerGas": "10",
"nonce": "41",
"value": "10000000000"
},
"fastMode": true, // for backwards compatibility; may be removed in a future version
"seenInMempool": false,
"isRevert": false
}

While your transaction is PENDING or FAILED we will try to respond with the latest seen simulation error and revert reason if exists.

Below is the table of currently supported simError values.

Sim errorDescription
SimErrorMaxFeePerGasTooLowConsensus incompatible tx that wasn't caught on rpc
SimErrorInsufficientFundsInsufficient ETH balance to pay for gas
SimErrorNonceTooLowNonce too low
SimErrorNonceTooHighNonce too high
SimErrorInvalidChainIdConsensus incompatible tx that wasn't caught on rpc
SimErrorExecutionRevertedExecution reverted (slippage tolerance exceeded). Check revertReason field for more details
SimErrorOutOfGasRan out of gas during execution (gas limit too low)

revertReason field is a valid utf-8 part of the simulation result. Example: TRANSFER_FROM_FAILED, UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT