Overview
The Writer Actions stream contains system operations for spot token transfers, tracking automated asset movements and system-level transfers within Hyperliquid's ecosystem.
Stream Type: WRITER_ACTIONS
API Availability: gRPC Streaming API + JSON-RPC/WebSocket APIs
Volume: Low - Updates when system performs automated spot token transfers
Data Structure
Writer actions capture system operations for spot token transfers, indexed by user address, nonce, and EVM transaction hash:
{
"local_time": "2026-04-30T19:10:43.217059852",
"block_time": "2026-04-30T19:10:43.060250073",
"block_number": 978911025,
"events": [
{
"user": "0x200000000000000000000000000000000000012b",
"nonce": 1184153,
"evm_tx_hash": "0x172a41083c44c9568494fbec81d11292e192938674b861e410e4a7e965235c67",
"action": {
"type": "SystemSpotSendAction",
"destination": "0x46bbfef00cde256f834340c50286dd7b495ca418",
"token": 299,
"wei": 56697105031
}
}
]
}
Field Definitions
Event Structure
| Field | Type | Description |
|---|---|---|
| user | string | System user address (usually starts with 0x200000...) |
| nonce | integer | Unique nonce for the system operation |
| evm_tx_hash | string | Associated EVM transaction hash |
| action | object | Action details (see Action Structure below) |
Action Structure
Two action types appear in this stream. The following fields are common to both:
| Field | Type | Description |
|---|---|---|
| type | string | Action type: "SystemSpotSendAction" or "SystemSendAssetAction" |
| destination | string | Destination address for the token transfer |
| token | integer | Token ID (numeric identifier for the specific token) |
| wei | integer | Transfer amount in wei (smallest unit) |
SystemSendAssetAction Additional Fields
SystemSendAssetAction events include three additional nullable fields not present on SystemSpotSendAction:
| Field | Type | Description |
|---|---|---|
| destinationDexOrSpot | integer|null | Target DEX/spot index for the asset transfer (0 = default spot, null when not applicable) |
| fromSubAccount | string|null | Source sub-account address (null when not applicable) |
| sourceDexOrSpot | integer|null | Source DEX/spot index for the asset transfer (0 = default spot, null when not applicable) |
API Usage
gRPC Streaming
// Subscribe to writer actions
const request = {
subscribe: {
stream_type: 'WRITER_ACTIONS',
filters: {
user: { values: ['0x2000000000000000000000000000000000000001'] },
type: { values: ['SystemSpotSendAction'] }
}
}
};
JSON-RPC
# Get latest writer action blocks
curl -X POST https://your-endpoint.hype-mainnet.quiknode.pro/your-token/hypercore \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "hl_getLatestBlocks",
"params": {
"stream": "writer_actions",
"count": 10
},
"id": 1
}'
WebSocket
// Subscribe to writer actions with filters
ws.send(JSON.stringify({
method: 'hl_subscribe',
params: {
streamType: 'writer_actions',
filters: {
user: ['0x2000000000000000000000000000000000000001'],
type: ['SystemSpotSendAction']
}
}
}));
Example System Transfer Records
SystemSendAssetAction
{
"user": "0x6af3bccd77314d35d47317e1d1bc17df248c991f",
"nonce": 1184125,
"evm_tx_hash": "0x299c90b15e410587841ab057f84faafa4d076a26db53c34a35231fe7dc4361bf",
"action": {
"type": "SystemSendAssetAction",
"destination": "0x6043daf4fbd6bd60601d277312a0664551302e70",
"fromSubAccount": null,
"sourceDexOrSpot": 0,
"destinationDexOrSpot": 0,
"token": 0,
"wei": 1882600
}
}
SystemSpotSendAction - Token ID 299
{
"user": "0x200000000000000000000000000000000000012b",
"nonce": 1184153,
"evm_tx_hash": "0x172a41083c44c9568494fbec81d11292e192938674b861e410e4a7e965235c67",
"action": {
"type": "SystemSpotSendAction",
"destination": "0x46bbfef00cde256f834340c50286dd7b495ca418",
"token": 299,
"wei": 56697105031
}
}
SystemSpotSendAction - Token ID 268
{
"user": "0x200000000000000000000000000000000000010c",
"nonce": 1184131,
"evm_tx_hash": "0x350349ac511ce5c8b02964999538653a508b1ad770bc10e1921b563f0f67177c",
"action": {
"type": "SystemSpotSendAction",
"destination": "0x796bc4eb6cc934d3432d5d08c74f2d957f60e7bc",
"token": 268,
"wei": 427229100
}
}
SystemSpotSendAction - Token ID 0
{
"user": "0x2000000000000000000000000000000000000000",
"nonce": 1184132,
"evm_tx_hash": "0xba6756dc9cbd35cfe2deb90686271df9981c6442c7f85226ce0738d5494a4649",
"action": {
"type": "SystemSpotSendAction",
"destination": "0x6b9e773128f453f5c2c60935ee2de2cbc5390a24",
"token": 0,
"wei": 1738000000
}
}
Important Notes
- System Operations: These are automated system-level transfers, not user-initiated transfers
- Token IDs: Tokens are referenced by numeric IDs rather than symbol names (e.g., 0, 221, 269, 299)
- Wei Format: All amounts are in wei format (smallest denomination) as integers
- User Addresses: Often system addresses starting with
0x200000000000000000000000000000000000, butSystemSendAssetActionevents can also have regular user addresses - EVM Integration: Each action has an associated EVM transaction hash for cross-system tracking
- SystemSpotSendAction: The primary action type for spot token transfers within the system
Token ID Reference
Common token IDs seen in system transfers:
- Token ID 0 - Base token or ETH equivalent
- Token ID 221 - System token (specific identity varies)
- Token ID 269 - System token (specific identity varies)
- Token ID 299 - System token (specific identity varies)
Note: Many token IDs appear in practice — the full mapping is available via the Hyperliquid spotMeta Info API endpoint.