Transaction status

Check whether a transaction is pending, successful or failed, with its block and confirmations.

# Transaction status

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

A small, fast status check for one transaction: pending, success or failed, its block, confirmations and time. Built for polling a deposit until it confirms.

**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/status?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

A confirmed transaction.

```json
{
  "status": 1,
  "code": "API200",
  "message": "success",
  "data": {
    "hash": "9dedeb8092d6f026d235e3beb24337ba5657635a38cc949f70c0f28ea15e30db",
    "status": "success",
    "block": 975851,
    "confirmations": 2,
    "time": "2026-11-14T22:18:52Z"
  },
  "go": null,
  "meta": {
    "requestid": "0123456789abcdef",
    "notices": []
  }
}
```

| Field | Type | Description |
| --- | --- | --- |
| `data.hash` | string | The transaction hash. |
| `data.status` | string | `success`, `failed` or `pending`. |
| `data.block` | integer \| null | Block height; null while pending. |
| `data.confirmations` | integer | 0 while pending. |
| `data.time` | string \| null | Block time (ISO 8601 UTC); null while pending. |

### API200 (HTTP 200): OK (pending)

A transaction that is in the mempool and not yet in a block.

```json
{
  "status": 1,
  "code": "API200",
  "message": "success",
  "data": {
    "hash": "9dedeb8092d6f026d235e3beb24337ba5657635a38cc949f70c0f28ea15e30db",
    "status": "pending",
    "block": null,
    "confirmations": 0,
    "time": null
  },
  "go": null,
  "meta": {
    "requestid": "0123456789abcdef",
    "notices": []
  }
}
```

### 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.

```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

- `failed` means the transaction was included in a block but reverted (ETH and TRON). UTXO transactions are `success` once in a block.
- Compare `confirmations` with your own threshold. See [Data freshness](https://docs.rarebl.com/data-freshness) for reorg depths and the guide [Track a deposit until it confirms](https://docs.rarebl.com/guides/track-a-deposit).

Back to the Rarebl AI documentation index