π¨βπ» Get transaction by hash
Code samples
GET /api/v1/trx/transactions/{hash}
curl 'https://settla.net/api/v1/trx/transactions/8b5e5f9a99d65c0b3aac7f3cbc2ee3029a0d4225054fd99830236d96d853c503' \
-H 'X-API-Key: $SETTLA_API_KEY' \
-H 'Accept: application/json'
Returns one transaction in normalised form, with the node's original payload kept under raw_data. Addresses are decoded to base58, TRC20 transfers are decoded into from/to/amount/token_symbol so you do not have to parse the a9059cbbβ¦ call data yourself, and token_decimals tells you how to scale amount β "2000000" with token_decimals: 6 is 2 USDT. fee is unreliable on this endpoint. When the node has no execution info for the transaction, the handler falls back to raw_data.fee_limit β the ceiling the sender allowed, not what was charged. In the example below that yields 50000000 (50 TRX) for a transfer that actually cost nothing. For the real figure read fee from GET /api/v1/trx/address/{address}/transactions. result is the on-chain outcome: SUCCESS or FAILED. raw_data.ret[].contractRet carries the precise reason, e.g. OUT_OF_ENERGY.
π οΈ Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| hash | path | string | true | 64-character transaction ID. |
Example responses
200 Response
{
"tx_id": "8b5e5f9a99d65c0b3aac7f3cbc2ee3029a0d4225054fd99830236d96d853c503",
"amount": "2000000",
"block_number": 77951958,
"block_timestamp": 1764517689000,
"from": "TEPSrSYPDSQ7yXpMFPq91Fb1QEWpMkRGfn",
"to": "TMuA6YqfCeX8EhbfYEg5y7S4DqzSJireY9",
"token_symbol": "USDT",
"token_decimals": 6,
"contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
"contract_type": "TriggerSmartContract",
"fee": 50000000,
"result": "SUCCESS",
"raw_data": {
"txID": "8b5e5f9a99d65c0b3aac7f3cbc2ee3029a0d4225054fd99830236d96d853c503",
"raw_data": {
"ref_block_bytes": "73c3",
"ref_block_hash": "0214af5c5729128e",
"expiration": 1764517986000,
"contract": [
{
"type": "TriggerSmartContract",
"parameter": {
"type_url": "type.googleapis.com/protocol.TriggerSmartContract",
"value": {
"owner_address": "4130760c7e10b1d3509d8d64a7e9eb9ab94bc83495",
"contract_address": "41a614f803b6fd780986a42c78ec9c7f77e6ded13c",
"data": "a9059cbb00000000000000000000000082dd6b9966724ae2fdc79b416c7588da67ff1b3500000000000000000000000000000000000000000000000000000000001e8480"
}
}
}
],
"timestamp": 1764517687800,
"fee_limit": 50000000
},
"signature": [
"4817931a156fa2e95fabac528daf33e1d09b34fb3ee2925beec879e40ce15c16a6ca9d2001524f29757fd9b57ada9432fac300aa21d8dfffa238c2a19232bb6c01"
],
"ret": [
{
"contractRet": "SUCCESS"
}
],
"raw_data_hex": "0a0273c322080214af5c5729128e40d0fddeabad335aae01081f12a9010a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412740a154130760c7e10b1d3509d8d64a7e9eb9ab94bc83495121541a614f803b6fd780986a42c78ec9c7f77e6ded13c2244a9059cbb00000000000000000000000082dd6b9966724ae2fdc79b416c7588da67ff1b3500000000000000000000000000000000000000000000000000000000001e848070f8e3ccabad33900180e1eb17"
},
"@timestamp": "2026-09-02T07:16:47.176691Z"
}
500 Response
{
"error": "Could not connect to TRX node."
}
π Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Transaction details | Inline |
| 500 | Internal Server Error | Could not connect to TRX node | Inline |
π Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| Β» tx_id | string | false | none | none |
| Β» amount | string | false | none | Smallest unit, as a decimal string. Scale it by token_decimals. |
| » block_number | integer¦null | false | none | null while the transaction is still unconfirmed. |
| Β» block_timestamp | integer(int64)Β¦null | false | none | Milliseconds since the Unix epoch. |
| » from | string¦null | false | none | Base58, decoded from the contract parameters. |
| » to | string¦null | false | none | none |
| Β» token_symbol | string | false | none | TRX for native transfers. |
| Β» token_decimals | integer | false | none | none |
| » contract_address | string¦null | false | none | null for native TRX transfers. |
| Β» contract_type | string | false | none | TransferContract for TRX, TriggerSmartContract for TRC20. |
| Β» fee | integerΒ¦null | false | none | Unreliable β falls back to raw_data.fee_limit when the node has no execution info. See the endpoint description. |
| Β» result | string | false | none | none |
| Β» raw_data | object | false | none | The node's own transaction object, unmodified. |
| Β» @timestamp | string(date-time) | false | none | When this response was assembled, not a chain timestamp. |
Status Code 500
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| Β» error | string | false | none | none |
| Β» details | object | false | none | Present only on a few validation errors. |
Enumerated Values
| Property | Value |
|---|---|
| result | SUCCESS |
| result | FAILED |