Overview
Every transaction submitted through PolyNode RPC is tracked from submission to block inclusion. You can query the exact block position and confirmation latency.
Submit a Transaction
Hex-encoded signed transaction (with or without 0x prefix)
POST https://rpc.polynode.dev/v1/tx/submit
Content-Type: application/json
{
"raw_tx": "0x02f87083..."
}
Response
{
"tx_hash": "0xabc123...",
"submitted_at": 1710524000,
"status": "pending"
}
| Field | Description |
|---|
tx_hash | Transaction hash |
status | pending — waiting for block inclusion |
Check Transaction Status
GET https://rpc.polynode.dev/v1/tx/{tx_hash}
Pending
{
"status": "pending",
"submitted_at": 1710524000,
"elapsed_ms": 1500
}
Confirmed
{
"status": "confirmed",
"submitted_at": 1710524000,
"confirmed_at": 1710524002,
"block_number": 84210500,
"block_hash": "0xdef456...",
"tx_index": 0,
"total_txs_in_block": 186,
"is_first": true,
"latency_ms": 2450
}
| Field | Description |
|---|
block_number | Block the transaction was included in |
tx_index | Position within the block (0 = first transaction) |
total_txs_in_block | Total transactions in the block |
is_first | Whether this was the first transaction in the block |
latency_ms | Time from submission to block confirmation |
Expired
If a transaction isn’t included within ~128 seconds (64 blocks), it’s marked as expired:
{
"status": "expired",
"submitted_at": 1710524000,
"reason": "not included within 64 blocks"
}
Aggregate Stats
GET https://rpc.polynode.dev/v1/stats
{
"total_submitted": 1000,
"total_confirmed": 998,
"total_first_position": 895,
"first_position_rate": 0.897,
"total_expired": 2,
"pending": 0,
"avg_latency_ms": 2450
}