Quickstart#
This is a quickstart guide to get you up and running with the Pragma SDK.
Fetch data#
To fetch data on 3rd parties API, one can use the FetcherClient.
Here is step by step example:
from pragma_sdk.common.fetchers import FetcherClient
from pragma_sdk.common.fetchers.fetchers import BitstampFetcher, GateIOFetcher
from pragma_sdk.common.types.pair import Pair
# 1. Create a list of pairs that you want to fetch
pairs = [
Pair.from_tickers("BTC","USD"),
Pair.from_tickers("ETH","USD"),
]
# 2. Create your fetchers and add them to the FetcherClient
bitstamp_fetcher = BitstampFetcher(pairs, "publisher_test")
gateio_fetcher = GateIOFetcher(pairs, "publisher_test")
fetchers = [
bitstamp_fetcher,
gateio_fetcher,
]
fc = FetcherClient()
fc.add_fetchers(fetchers)
# 3. Fetch the data
entries = await fc.fetch()
Hint
If you are experiencing issues with fetching, it’s most likely due to the fetcher not being able to connect to the API.
Some fetchers do require api_key keyword argument in their constructor.
Please refer to the fetcher’s documentation for more information.
Also if you want to fetch data synchronously, you can use the fetch_sync() method.
Interact with pragma on-chain#
To interact with the Pragma on-chain, one can use the PragmaOnChainClient. The client covers most of the external endpoints of the Pragma on-chain contracts. Please refer to the complete documentation
Here is an example :
from pragma_sdk.onchain.client import PragmaOnChainClient
from pragma_sdk.common.types.pair import Pair
from pragma_sdk.common.types.types import AggregationMode, DataTypes
from pragma_sdk.common.types.asset import Asset
# Create your client
poc = PragmaOnChainClient(
network="mainnet", # defaults to sepolia
)
# Get spot data
data = await poc.get_spot(
'BTC/USD',
AggregationMode.Median,
['FOURLEAF', 'MECX', 'FLOWDESK'],
block_number=12345678 # defaults to latest
)
print(f"Retrieved BTC/USD price data: {data.price}.
{data.num_sources_aggregated} sources aggregated.")
# Get all sources for spot 'ETH/USD'
sources = await poc.get_all_sources(
Asset(DataTypes.SPOT, 'ETH/USD')
)
Hint
If you are interacting with contracts locally or on a custom network, you can specify a custom RPC url in the network parameter of the PragmaOnChainClient constructor. In that case make sure to specify the chain_name. You can also specify addresses of contracts with the account_contract_address argument.
Interact with pragma off-chain#
To interact with the Pragma off-chain, one can use the PragmaOffChainClient<pragma_sdk.offchain.client.PragmaOffChainClient>. The client covers most of the external endpoints of the Pragma off-chain API. Please refer to the complete api documentation
An API key is currently needed to interact with the off-chain API. You can get one by contacting us at support@pragma.build.
from pragma_sdk.offchain.client import PragmaAPIClient
from pragma_sdk.common.types.pair import Pair
from pragma_sdk.common.types.types import AggregationMode, DataTypes
from pragma_sdk.common.types.asset import Asset
# Create your client
pac = PragmaAPIClient(
api_base_url="https://api.dev.pragma.build",
api_key="your_api_key"
)
# Get 1min OHLC data
entries = await poc.get_ohlc(
'BTC/USD',
None,
Interval.ONE_MINUTE,
AggregationMode.Median,
)