# Transaction

`GET https://api.rarebl.com/open/tx/get` or `POST https://api.rarebl.com/open/tx/get`

Full detail of one transaction by hash: status, block, amounts and fee, plus inputs and outputs (UTXO chains) or sender, gas, token transfers and logs (ETH and TRON).

**Rate class:** read (5 requests per second, burst 20, per IP). **Available since:** Open API v1.

## Request

Send the parameters as query parameters (GET) or as a JSON object (POST with `Content-Type: application/json`). They are identical either way. No API key is needed: `X-API-KEY` is reserved and ignored.

Example: `curl "https://api.rarebl.com/open/tx/get?chain=btc&id=9dedeb8092d6f026d235e3beb24337ba5657635a38cc949f70c0f28ea15e30db"`

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `chain` | string | Yes | The chain to query. One of: btc, ltc, bch, dash, eth, tron. |
| `id` | string | Yes | The transaction hash. 64 hex characters, lowercase; ETH hashes carry 0x. |

## Responses

### API200 (HTTP 200): OK

The transaction. This UTXO example is shortened; ETH and TRON transactions carry an `account` object instead of `utxo`.

```json
{
  "status": 1,
  "code": "API200",
  "message": "success",
  "data": {
    "tx": {
      "chain": "btc",
      "hash": "9dedeb8092d6f026d235e3beb24337ba5657635a38cc949f70c0f28ea15e30db",
      "status": "success",
      "block": 975851,
      "blockHash": "0000000000000000000019616694441cd8af0ea40612fea00423994106ff3339",
      "time": "2026-11-14T22:18:52Z",
      "confirmations": 2,
      "value": "0.022609",
      "fee": "0.000448",
      "utxo": {
        "size": 223,
        "vsize": 142,
        "weight": 565,
        "locktime": 975850,
        "version": 2,
        "rbf": true,
        "coinbase": false,
        "inputs": [
          {
            "txid": "15f0189bea2a90b1b7232e96e9d9728ac72187133ce2ad33f2ee464f45cb8fa8",
            "vout": 1,
            "address": "bc1qsxcc56fruvcrwvxpf8ulg572rtt2vn34vtyjlt",
            "value": "0.023057",
            "scriptType": "witness_v0_keyhash",
            "sequence": 4294967293,
            "coinbase": false
          }
        ],
        "outputs": [
          {
            "n": 0,
            "address": "37dD2C3QMSSVLPAyQVZo8ZLG53AgUDbcuc",
            "value": "0.01",
            "scriptType": "scripthash",
            "opReturn": null,
            "spent": false
          },
          {
            "n": 1,
            "address": "bc1q7dszvzdj8lk8dd4ssad94m0t2acunaf48j455q",
            "value": "0.012609",
            "scriptType": "witness_v0_keyhash",
            "opReturn": null,
            "spent": true
          }
        ]
      },
      "details": [
        {
          "key": "status",
          "label": "Status",
          "value": "Confirmed",
          "kind": "text"
        },
        {
          "key": "block",
          "label": "Block",
          "value": 975851,
          "kind": "block"
        },
        {
          "key": "inputTotal",
          "label": "Total input",
          "value": "0.023057",
          "kind": "amount",
          "unit": "BTC"
        },
        {
          "key": "fee",
          "label": "Fee",
          "value": "0.000448",
          "kind": "amount",
          "unit": "BTC"
        },
        {
          "key": "feeRate",
          "label": "Fee rate",
          "value": "315.49",
          "kind": "number",
          "unit": "sat/vB",
          "hint": "Fee divided by virtual size."
        }
      ]
    }
  },
  "go": null,
  "meta": {
    "requestid": "0123456789abcdef",
    "notices": []
  }
}
```

| Field | Type | Description |
| --- | --- | --- |
| `data.tx.status` | string | `success`, `failed` or `pending`. |
| `data.tx.block` | integer \| null | Block height; null while pending. |
| `data.tx.confirmations` | integer | Blocks on top of the transaction's block, counting that block (0 while pending). |
| `data.tx.value` | string | Native amount moved (UTXO: total output). |
| `data.tx.fee` | string \| null | Native fee; null when it cannot be resolved (for example Litecoin MWEB). |
| `data.tx.utxo` | object | UTXO chains only: size, vsize, weight, locktime, version, rbf, coinbase, `inputs[]` and `outputs[]`. |
| `data.tx.account` | object | ETH and TRON only: from, to, nonce, gas fields, decoded method, `tokenTransfers[]`, `logs[]` and TRON `tron` resources. |
| `data.tx.details` | DetailRow[] | Overview rows picked and ordered by the backend. |

### API400 (HTTP 400): Bad Request

A parameter is missing or malformed. `data.param` names it (here `id`).

```json
{
  "status": 0,
  "code": "API400",
  "message": "Transaction id must be a 64-character hash.",
  "data": {
    "param": "id"
  },
  "go": null,
  "meta": {
    "requestid": "0123456789abcdef",
    "notices": []
  }
}
```

### API404 (HTTP 404): Not Found

The transaction does not exist on that chain.

```json
{
  "status": 0,
  "code": "API404",
  "message": "Transaction not found.",
  "data": null,
  "go": null,
  "meta": {
    "requestid": "0123456789abcdef",
    "notices": []
  }
}
```

### API409 (HTTP 409): Conflict

ETH only: the node is still building its transaction index, so older transactions cannot be looked up yet.

```json
{
  "status": 0,
  "code": "API409",
  "message": "The node is still indexing old transactions. Try again later.",
  "data": {
    "reason": "tx_index_pending"
  },
  "go": null,
  "meta": {
    "requestid": "0123456789abcdef",
    "notices": []
  }
}
```

### API429 (HTTP 429): Too Many Requests

Rate limited (5 requests per second per IP, burst 20). A `Retry-After` header says how long to wait, in seconds.

```json
{
  "status": 0,
  "code": "API429",
  "message": "Too many requests. Please retry shortly.",
  "data": null,
  "go": null,
  "meta": {
    "requestid": "0123456789abcdef",
    "notices": []
  }
}
```

### API502 (HTTP 502): Bad Gateway

The node is unavailable, still syncing or timed out. Retry later with a short back-off.

```json
{
  "status": 0,
  "code": "API502",
  "message": "The node is unavailable or timed out. Please try again.",
  "data": null,
  "go": null,
  "meta": {
    "requestid": "0123456789abcdef",
    "notices": []
  }
}
```

## Notes

- Amounts are decimal strings in whole units (never floats). ETH gas prices are in Gwei; TRON fees are in TRX.
- Litecoin (MWEB) hides amounts: `fee` is null and unresolved input `value`s are null, never `0`.
- Litecoin and Bitcoin Cash resolve input addresses and values (and so `fee`) here only, for at most 50 inputs. `outputs[].spent` is looked up for at most 50 outputs, else null.
- To wait for confirmations, poll the lighter [Transaction status](https://docs.rarebl.com/api/tx/status).
