Fetch real-time price data from Pyth Network’s decentralized oracle network. Access price feeds for various crypto assets with support for symbol lookup and price formatting.
Core Features
-
Price Feed Management
- Symbol-based feed lookup
- Price feed ID resolution
- Real-time price fetching
- Decimal adjustment
-
Price Operations
- Multi-symbol support
- Price scaling
- Error handling
- Format conversion
Usage
Get Price Feed ID
// Get feed ID by token symbol
const feedId = await agent.getPythPriceFeedID("SOL");
console.log("SOL Price Feed ID:", feedId);
Fetch Current Price
// Fetch current price using feed ID
const price = await agent.getPythPrice(feedId);
console.log("Current Price:", price);
// Or chain the operations
const symbol = "SOL";
const feedId = await agent.getPythPriceFeedID(symbol);
const price = await agent.getPythPrice(feedId);
Example Prompts
Natural Language Prompts
"Get the current SOL price from Pyth"
"Check ETH price using Pyth oracle"
"Fetch BTC/USD price feed"
"Look up price feed ID for USDC"
Fetch Price
Direct Feed Query
{
"priceFeedId": "H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG"
}
Implementation Details
Price Feed ID Lookup
interface PythPriceFeedIDItem {
id: string;
attributes: {
base: string;
quote: string;
asset_type: string;
};
}
// Features
- Case-insensitive matching
- Multiple feed handling
- Asset type filtering
- Error recovery
Price Fetching
interface PythPrice {
price: {
price: string;
expo: number;
};
}
// Features
- Decimal adjustment
- Price scaling
- Format handling
- BN precision
Price Feed ID Response
{
status: "success",
feedId: "H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG"
}
Price Response
{
status: "success",
price: "23.45",
message: "Current price: $23.45"
}
Error Handling
try {
const price = await agent.getPythPrice(feedId);
} catch (error) {
if (error.message.includes("No price feed")) {
// Handle missing feed
} else if (error.message.includes("HTTP error")) {
// Handle network issues
}
}
Best Practices
-
Feed ID Management
- Cache common feeds
- Validate symbols
- Handle multiple matches
- Monitor updates
-
Price Fetching
- Handle decimals properly
- Validate responses
- Consider staleness
- Format consistently
-
Error Handling
- Implement retries
- Validate inputs
- Check feed status
- Log errors
-
Performance
- Cache feed IDs
- Batch requests
- Monitor latency
- Handle timeouts
Common Issues
-
Feed Lookup
- Invalid symbols
- Multiple matches
- Missing feeds
- Network errors
-
Price Fetching
- Stale prices
- Decimal errors
- Format issues
- Connection problems
-
Data Quality
- Price accuracy
- Update frequency
- Feed reliability
- Data consistency
Common Price Feeds
Symbol | Feed ID (Mainnet) |
---|
SOL/USD | H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG |
BTC/USD | GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU |
ETH/USD | JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB |
USDC/USD | Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD |
Price Update Frequency
- Most feeds update every 400ms
- Updates depend on market conditions
- Consider confidence intervals
- Monitor update timestamps
Integration Tips
-
Price Monitoring
// Regular price checks
setInterval(async () => {
const price = await agent.getPythPrice(feedId);
console.log(`Current price: $${price}`);
}, 5000);
-
Error Recovery
async function getPriceWithRetry(feedId: string, retries = 3) {
for (let i = 0; i < retries; i++) {
try {
return await agent.getPythPrice(feedId);
} catch (error) {
if (i === retries - 1) throw error;
await new Promise(r => setTimeout(r, 1000));
}
}
}
getTokenData
: Get token information
trade
: Execute trades
fetchMarketData
: Get market info
calculatePositionValue
: Value positions
Responses are generated using AI and may contain mistakes.