Community Ecosystem Infra & Data Multi-file

helius-api

Enhanced Solana RPC with DAS API, parsed transactions, webhooks, and priority fee estimation via Helius

Ecosystem skill — independently developed and maintained by AGI Pro Labs, not the Solana Foundation. No security review is performed; evaluate before use.

One command for Claude Code, Cursor, Codex, Windsurf and other agents — installs from the upstream repo (current HEAD; it ships 5 skills — pick helius-api when prompted).

$npx skills add agiprolabs/claude-trading-skills

Skill contents

Helius API — Enhanced Solana RPC

Helius extends standard Solana RPC with parsed transaction history, a unified Digital Asset Standard (DAS) API, webhooks, and priority fee estimation. Essential for wallet analysis, token metadata, and transaction monitoring.

Quick Start

1. Get an API Key

Sign up at dashboard.helius.dev — free tier available (1M credits/mo, no card required).

export HELIUS_API_KEY="your-api-key"

2. Install Dependencies

uv pip install httpx python-dotenv

3. Two Base URLs

Helius uses different base URLs depending on the API:

APIBase URLProtocol
RPC / DAS / Priority Feeshttps://mainnet.helius-rpc.com/?api-key=KEYJSON-RPC 2.0
Enhanced Transactions / Webhookshttps://api-mainnet.helius-rpc.com/v0/...?api-key=KEYREST

DAS API (Digital Asset Standard)

Unified interface for querying all Solana digital assets — fungible tokens, NFTs, compressed NFTs, Token-2022.

Get Asset Metadata

import httpx, os

API_KEY = os.environ["HELIUS_API_KEY"]
RPC_URL = f"https://mainnet.helius-rpc.com/?api-key={API_KEY}"

resp = httpx.post(RPC_URL, json={
    "jsonrpc": "2.0", "id": 1,
    "method": "getAsset",
    "params": {
        "id": "So11111111111111111111111111111111111111112",  # wSOL
        "options": {"showFungible": True}
    }
})
asset = resp.json()["result"]
# asset.content.metadata.name, asset.token_info.decimals, etc.

Get All Assets for a Wallet

resp = httpx.post(RPC_URL, json={
    "jsonrpc": "2.0", "id": 1,
    "method": "getAssetsByOwner",
    "params": {
        "ownerAddress": "WALLET_ADDRESS",
        "page": 1,
        "limit": 100,
        "displayOptions": {
            "showFungible": True,
            "showNativeBalance": True,
            "showZeroBalance": False,
        }
    }
})
assets = resp.json()["result"]["items"]

Search Assets with Filters

resp = httpx.post(RPC_URL, json={
    "jsonrpc": "2.0", "id": 1,
    "method": "searchAssets",
    "params": {
        "ownerAddress": "WALLET_ADDRESS",
        "tokenType": "fungible",      # fungible | nonFungible | all
        "page": 1,
        "limit": 50,
    }
})

All DAS Methods

MethodPurposeCredits
getAssetSingle asset metadata10
getAssetBatchUp to 1,000 assets10
getAssetsByOwnerAll assets for a wallet10
getAssetsByGroupAssets by collection10
getAssetsByCreatorAssets by creator10
getAssetsByAuthorityAssets by update authority10
searchAssetsMulti-criteria filtered search10
getAssetProofMerkle proof (compressed NFTs)10
getAssetProofBatchBatch proofs10
getSignaturesForAssetTx history for an asset10
getNftEditionsAll editions of a master10
getTokenAccountsToken accounts by mint/owner10

See references/das_api.md for complete field documentation.

Enhanced Transactions API

Transforms raw Solana transactions into human-readable structured data with categorized types and sources.

Parse a Transaction

API_URL = f"https://api-mainnet.helius-rpc.com/v0/transactions?api-key={API_KEY}"

resp = httpx.post(API_URL, json={
    "transactions": ["SIGNATURE_HERE"],
})
parsed = resp.json()[0]
# parsed["type"]        → "SWAP"
# parsed["source"]      → "JUPITER"
# parsed["description"] → "User swapped 1 SOL for 150 USDC on Jupiter"
# parsed["tokenTransfers"] → [{mint, amount, from, to}, ...]
# parsed["nativeTransfers"] → [{from, to, amount}, ...]

Get Parsed Transaction History for a Wallet

url = f"https://api-mainnet.helius-rpc.com/v0/addresses/{wallet}/transactions"
resp = httpx.get(url, params={
    "api-key": API_KEY,
    "limit": 50,
    "type": "SWAP",  # optional filter
})
history = resp.json()

Transaction Types (151+)

Key types for trading analysis:

TypeMeaning
SWAPDEX swap
TRANSFERToken/SOL transfer
ADD_LIQUIDITY / REMOVE_LIQUIDITYLP operations
NFT_SALE / NFT_MINT / NFT_LISTINGNFT marketplace
STAKE_SOL / UNSTAKE_SOLStaking
CREATE_ORDER / FILL_ORDERLimit orders

Transaction Sources (50+)

JUPITER, RAYDIUM, ORCA, MAGIC_EDEN, TENSOR, MARINADE, METEORA, PHANTOM, etc.

See references/enhanced_transactions.md for full type/source enums.

Webhooks

Real-time notifications for on-chain events — no polling required.

Create a Webhook

url = f"https://api-mainnet.helius-rpc.com/v0/webhooks?api-key={API_KEY}"
resp = httpx.post(url, json={
    "webhookURL": "https://your-server.com/helius-hook",
    "transactionTypes": ["SWAP", "TRANSFER"],
    "accountAddresses": ["WalletAddress1", "WalletAddress2"],
    "webhookType": "enhanced",
    "authHeader": "your-secret-token",
})
webhook_id = resp.json()["webhookID"]

Webhook Types

TypeData FormatFiltering
enhancedParsed (like Enhanced Transactions API)By transaction type + account
rawUnprocessed transaction dataBy account only (lower latency)
discordFormatted messages to Discord channelBy transaction type + account

Manage Webhooks

# List all
webhooks = httpx.get(f"{url}?api-key={API_KEY}").json()

# Update
httpx.put(f"{url}/{webhook_id}?api-key={API_KEY}", json={
    "webhookURL": "https://new-url.com/hook",
    "transactionTypes": ["SWAP"],
    "accountAddresses": ["NewWallet..."],
    "webhookType": "enhanced",
})

# Delete
httpx.delete(f"{url}/{webhook_id}?api-key={API_KEY}")

Up to 100,000 addresses per webhook (via API). 1 credit per event delivered.

Priority Fee API

Estimate optimal priority fees for transaction landing.

resp = httpx.post(RPC_URL, json={
    "jsonrpc": "2.0", "id": 1,
    "method": "getPriorityFeeEstimate",
    "params": [{
        "accountKeys": ["JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"],
        "options": {
            "includeAllPriorityFeeLevels": True,
            "recommended": True,
        }
    }]
})
fees = resp.json()["result"]
# fees["priorityFeeEstimate"]  → recommended fee (microlamports/CU)
# fees["priorityFeeLevels"]    → {min, low, medium, high, veryHigh, unsafeMax}
LevelPercentileUse Case
min0-20thNon-urgent
low20-40thStandard transfers
medium40-60thDEX swaps (recommended default)
high60-80thTime-sensitive
veryHigh80-95thCritical timing
unsafeMax100thEmergency only

Fee in microlamports/CU. Total priority fee = microlamports/CU × compute units consumed.

Pricing & Rate Limits

PlanPrice/moCreditsRPC req/sDAS req/s
Free$01M102
Developer$4910M5010
Business$499100M20050
Professional$999200M500100

Credit costs: Standard RPC = 1, DAS = 10, Enhanced Txns = 100, Webhooks = 1/event. Additional credits: $5/million.

Files

References

  • references/das_api.md — Complete DAS API field reference and response schemas
  • references/enhanced_transactions.md — Transaction types, sources, and response structure
  • references/webhooks.md — Webhook setup, management, and event handling
  • references/error_handling.md — Rate limits, error codes, and retry strategies

Scripts

  • scripts/wallet_analysis.py — Fetch wallet assets and parsed transaction history
  • scripts/token_lookup.py — Look up token metadata and holder information via DAS