STX Transfers
Overview
Every canonical STX transfer event on Stacks. Sender, recipient, amount in microSTX, and the optional hex-encoded memo. Sourced directly from canonical L1 events — no decoder, no waiting.
Use the read API for dashboards and ad-hoc queries. Use parquet for historical analytics and warehouse loads.
Schema
Schema version v0. The canonical contract:
| Column | Type | Nullable | Description |
|---|---|---|---|
cursor | string | no | <block_height>:<event_index> |
block_height | int64 | no | Canonical Stacks block height |
block_time | string | no | ISO-8601 UTC timestamp |
tx_id | string | no | Parent transaction id |
tx_index | int32 | no | Parent transaction position in block |
event_index | int32 | no | Streams event index in block |
sender | string | no | STX sender address |
recipient | string | no | STX recipient address |
amount | string | no | microSTX as decimal string (u128) |
memo | string | yes | Hex-encoded memo if present |
Read API
GET /v1/datasets/stx-transfers
Filters: sender, recipient, from_block, to_block. Pagination: cursor.
curl "https://api.secondlayer.dev/v1/datasets/stx-transfers?sender=SP1...&limit=100"Response shape:
{
"events": [
{
"cursor": "189999:42",
"block_height": 189999,
"block_time": "2026-05-05T12:34:56.000Z",
"tx_id": "0xabc...",
"tx_index": 12,
"event_index": 42,
"sender": "SP1...",
"recipient": "SP2...",
"amount": "1000000",
"memo": null
}
],
"next_cursor": "190001:7",
"tip": { "block_height": 195000 }
}Parquet
Parquet files are partitioned by 10,000-block range. The manifest lists every published file with row count and SHA-256.
Object prefix:
stacks-datasets/mainnet/v0/stx-transfers/data/block_height/<range>/data.parquet
stacks-datasets/mainnet/v0/stx-transfers/manifest/latest.json
stacks-datasets/mainnet/v0/stx-transfers/schema.jsonDuckDB:
SELECT recipient, sum(amount::DECIMAL) AS total
FROM read_parquet(
'https://pub-08fa583203de40b2b154e6a56624adc2.r2.dev/stacks-datasets/mainnet/v0/stx-transfers/data/block_height/*/data.parquet'
)
GROUP BY recipient
ORDER BY total DESC
LIMIT 20;Freshness
/public/status.datasets[] includes a stx-transfers entry with latest_finalized_cursor, generated_at, and lag_blocks against the chain tip. Expect ~10K + 144 blocks of lag in steady state.