MCPcopy Index your code
hub / github.com/blockfrost/blockfrost-python

github.com/blockfrost/blockfrost-python @0.7.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.7.0 ↗ · + Follow
382 symbols 1,629 edges 51 files 125 documented · 33%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Package Test PyPI Latest Release PyPI - Downloads Package Status License Made by Five Binaries Maintained by Mathias Frohlich

blockfrost-python

A Python SDK for Blockfrost.io API

Getting startedInstallationUsage

Getting started

To use this SDK, you first need login into blockfrost.io and create your project to retrieve your API key.

Installation

PyPI Latest Release

pip install blockfrost-python

Usage

Using the SDK is pretty straight-forward as you can see from the following examples.

Cardano

from blockfrost import BlockFrostApi, ApiError, ApiUrls

api = BlockFrostApi(
    project_id='YOUR API KEY HERE',  # or export environment variable BLOCKFROST_PROJECT_ID
    # optional: pass base_url or export BLOCKFROST_API_URL to use testnet, defaults to ApiUrls.mainnet.value
    base_url=ApiUrls.testnet.value,
)
try:
    health = api.health()
    print(health)   # prints object:    HealthResponse(is_healthy=True)
    health = api.health(return_type='json') # Can be useful if python wrapper is behind api version
    print(health)   # prints json:      {"is_healthy":True}
    health = api.health(return_type='pandas')
    print(health)   # prints Dataframe:         is_healthy
                    #                       0         True


    account_rewards = api.account_rewards(
        stake_address='stake1ux3g2c9dx2nhhehyrezyxpkstartcqmu9hk63qgfkccw5rqttygt7',
        count=20,
    )
    print(account_rewards[0].epoch)  # prints 221
    print(len(account_rewards))  # prints 20

    account_rewards = api.account_rewards(
        stake_address='stake1ux3g2c9dx2nhhehyrezyxpkstartcqmu9hk63qgfkccw5rqttygt7',
        count=20,
        gather_pages=True, # will collect all pages
    )
    print(account_rewards[0].epoch)  # prints 221
    print(len(account_rewards))  # prints 57

    address = api.address(
        address='addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz')
    print(address.type)  # prints 'shelley'
    for amount in address.amount:
        print(amount.unit)  # prints 'lovelace'

except ApiError as e:
    print(e)

IPFS

from blockfrost import BlockFrostIPFS, ApiError

ipfs = BlockFrostIPFS(
    project_id='YOUR API KEY HERE'  # or export environment variable BLOCKFROST_PROJECT_ID
)
file_hash = None
try:
    ipfs_object = ipfs.add('./README.md')
    file_hash = ipfs_object.ipfs_hash
    print(file_hash)
except ApiError as e:
    print(e)

try:
    with open('./README_downloaded.md', 'w') as file:
        file_data = ipfs.gateway(IPFS_path=file_hash).text
        file.write(file_data)
except ApiError as e:
    print(e)

Verifying Secure Webhook signature

Webhooks enable Blockfrost to push real-time notifications to your application. In order to prevent malicious actor from pretending to be Blockfrost every webhook request is signed. The signature is included in a request's Blockfrost-Signature header. This allows you to verify that the events were sent by Blockfrost, not by a third party. To learn more about Secure Webhooks, see Secure Webhooks Docs.

You can verify the signature using verifyWebhookSignature function.

Example:

# Example of Python Flask app with /webhook endpoint
# for processing events sent by Blockfrost Secure Webhooks
from flask import Flask, request, json
from blockfrost import verify_webhook_signature, SignatureVerificationError

SECRET_AUTH_TOKEN = "SECRET-WEBHOOK-AUTH-TOKEN"

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def webhook():
    if request.method == 'POST':
        # Validate webhook signature
        request_bytes = request.get_data()
        try:
            verify_webhook_signature(
                request_bytes, request.headers['Blockfrost-Signature'], SECRET_AUTH_TOKEN)
        except SignatureVerificationError as e:
            # for easier debugging you can access passed header and request_body values (e.header, e.request_body)
            print('Webhook signature is invalid.', e)
            return 'Invalid signature', 403

        # Get the payload as JSON
        event = request.json

        print('Received request id {}, webhook_id: {}'.format(
            event['id'], event['webhook_id']))

        if event['type'] == "block":
            # process Block event
            print('Received block hash {}'.format(event['payload']['hash']))
        elif event['type'] == "...":
            # truncated
        else:
            # Unexpected event type
            print('Unexpected event type {}'.format(event['type']))

        return 'Webhook received', 200
    else:
        return 'POST Method not supported', 405



if __name__ == "__main__":
    app.run(host='0.0.0.0', port=6666)

Development

Install dependencies

pip install -r requirements.txt
pip install -r test-requirements.txt

Install package

 pip install .

Run integration and unit tests:

pytest

For integration tests you need to set env variable BLOCKFROST_PROJECT_ID_MAINNET

Release workflow

To release the package create a new release via GitHub releases. This action triggers the automated release workflow that packages and uploads the distribution to PyPI.

Core symbols most depended-on inside this repo

convert_json_to_object
called by 123
blockfrost/utils.py
query_parameters
called by 62
blockfrost/utils.py
convert_json_to_pandas
called by 2
blockfrost/utils.py
verify_webhook_signature
called by 2
blockfrost/helpers.py
root
called by 2
blockfrost/api/__init__.py
to_dict
called by 1
blockfrost/utils.py
recursive_append
called by 1
blockfrost/utils.py
get_unix_timestamp
called by 1
blockfrost/helpers.py

Shape

Function 362
Method 13
Class 7

Languages

Python100%

Modules by API surface

tests/test_cardano_governance.py34 symbols
tests/test_cardano_transactions.py30 symbols
tests/test_cardano_pools.py24 symbols
tests/test_cardano_accounts.py24 symbols
tests/test_cardano_blocks.py22 symbols
blockfrost/utils.py20 symbols
tests/test_cardano_epochs.py18 symbols
blockfrost/api/cardano/transactions.py18 symbols
blockfrost/api/cardano/governance.py17 symbols
tests/test_cardano_scripts.py14 symbols
tests/test_cardano_assets.py12 symbols
tests/test_cardano_addresses.py12 symbols

For agents

$ claude mcp add blockfrost-python \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact