Skip to main content

BlockRun SDK - Pay-per-request AI (LLM & Image) via x402 on Base

Project description

BlockRun LLM SDK

Pay-per-request access to GPT-4o, Claude 4, Gemini 2.5, and more via x402 micropayments on Base.

Network: Base (Chain ID: 8453) Payment: USDC Protocol: x402 v2 (CDP Facilitator)

Installation

pip install blockrun-llm

Quick Start

from blockrun_llm import LLMClient

client = LLMClient()  # Uses BLOCKRUN_WALLET_KEY (never sent to server)
response = client.chat("openai/gpt-4o", "Hello!")

That's it. The SDK handles x402 payment automatically.

How It Works

  1. You send a request to BlockRun's API
  2. The API returns a 402 Payment Required with the price
  3. The SDK automatically signs a USDC payment on Base
  4. The request is retried with the payment proof
  5. You receive the AI response

Your private key never leaves your machine - it's only used for local signing.

Available Models

OpenAI GPT-5 Family

Model Input Price Output Price
openai/gpt-5.2 $1.75/M $14.00/M
openai/gpt-5.1 $1.25/M $10.00/M
openai/gpt-5 $1.25/M $10.00/M
openai/gpt-5-mini $0.25/M $2.00/M
openai/gpt-5-nano $0.05/M $0.40/M
openai/gpt-5.2-pro $21.00/M $168.00/M
openai/gpt-5-pro $15.00/M $120.00/M

OpenAI GPT-4 Family

Model Input Price Output Price
openai/gpt-4.1 $2.00/M $8.00/M
openai/gpt-4.1-mini $0.40/M $1.60/M
openai/gpt-4.1-nano $0.10/M $0.40/M
openai/gpt-4o $2.50/M $10.00/M
openai/gpt-4o-mini $0.15/M $0.60/M

OpenAI O-Series (Reasoning)

Model Input Price Output Price
openai/o1 $15.00/M $60.00/M
openai/o1-mini $1.10/M $4.40/M
openai/o3 $2.00/M $8.00/M
openai/o3-mini $1.10/M $4.40/M
openai/o4-mini $1.10/M $4.40/M

Anthropic Claude

Model Input Price Output Price
anthropic/claude-opus-4 $15.00/M $75.00/M
anthropic/claude-sonnet-4 $3.00/M $15.00/M
anthropic/claude-haiku-4.5 $1.00/M $5.00/M

Google Gemini

Model Input Price Output Price
google/gemini-3-pro-preview $2.00/M $12.00/M
google/gemini-2.5-pro $1.25/M $10.00/M
google/gemini-2.5-flash $0.15/M $0.60/M
google/gemini-2.5-flash-lite Free Free

Image Generation

Model Price
openai/dall-e-3 $0.04-0.08/image
openai/gpt-image-1 $0.02-0.04/image

Usage Examples

Simple Chat

from blockrun_llm import LLMClient

client = LLMClient()  # Uses BLOCKRUN_WALLET_KEY (never sent to server)

response = client.chat("openai/gpt-4o", "Explain quantum computing")
print(response)

# With system prompt
response = client.chat(
    "anthropic/claude-sonnet-4",
    "Write a haiku",
    system="You are a creative poet."
)

Full Chat Completion

from blockrun_llm import LLMClient

client = LLMClient()  # Uses BLOCKRUN_WALLET_KEY (never sent to server)

messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "How do I read a file in Python?"}
]

result = client.chat_completion("openai/gpt-4o", messages)
print(result.choices[0].message.content)

Async Usage

import asyncio
from blockrun_llm import AsyncLLMClient

async def main():
    async with AsyncLLMClient() as client:
        # Simple chat
        response = await client.chat("openai/gpt-4o", "Hello!")
        print(response)

        # Multiple requests concurrently
        tasks = [
            client.chat("openai/gpt-4o", "What is 2+2?"),
            client.chat("anthropic/claude-sonnet-4", "What is 3+3?"),
            client.chat("google/gemini-2.5-flash", "What is 4+4?"),
        ]
        responses = await asyncio.gather(*tasks)
        for r in responses:
            print(r)

asyncio.run(main())

List Available Models

from blockrun_llm import LLMClient

client = LLMClient()
models = client.list_models()

for model in models:
    print(f"{model['id']}: ${model['inputPrice']}/M input, ${model['outputPrice']}/M output")

Environment Variables

Variable Description Required
BLOCKRUN_WALLET_KEY Your EVM wallet private key Yes (or pass to constructor)
BLOCKRUN_API_URL API endpoint No (default: https://blockrun.ai/api)

Setting Up Your Wallet

  1. Create a wallet on Base network (Coinbase Wallet, MetaMask, etc.)
  2. Get some ETH on Base for gas (small amount, ~$1)
  3. Get USDC on Base for API payments
  4. Export your private key and set it as BLOCKRUN_WALLET_KEY
# .env file
BLOCKRUN_WALLET_KEY=0x...your_private_key_here

Error Handling

from blockrun_llm import LLMClient, APIError, PaymentError

client = LLMClient()

try:
    response = client.chat("openai/gpt-4o", "Hello!")
except PaymentError as e:
    print(f"Payment failed: {e}")
    # Check your USDC balance
except APIError as e:
    print(f"API error ({e.status_code}): {e}")

Testing

Running Unit Tests

Unit tests do not require API access or funded wallets:

pytest tests/unit                    # Run unit tests only
pytest tests/unit --cov              # Run with coverage report
pytest tests/unit -v                 # Verbose output

Running Integration Tests

Integration tests call the production API and require:

  • A funded Base wallet with USDC ($1+ recommended)
  • BLOCKRUN_WALLET_KEY environment variable set
  • Estimated cost: ~$0.05 per test run
export BLOCKRUN_WALLET_KEY=0x...
pytest tests/integration             # Run integration tests only
pytest                               # Run all tests

Integration tests are automatically skipped if BLOCKRUN_WALLET_KEY is not set.

Security

Private Key Safety

  • Private key stays local: Your key is only used for signing on your machine
  • No custody: BlockRun never holds your funds
  • Verify transactions: All payments are on-chain and verifiable

Best Practices

Private Key Management:

  • Use environment variables, never hard-code keys
  • Use dedicated wallets for API payments (separate from main holdings)
  • Set spending limits by only funding payment wallets with small amounts
  • Never commit .env files to version control
  • Rotate keys periodically

Input Validation: The SDK validates all inputs before API requests:

  • Private keys (format, length, valid hex)
  • API URLs (HTTPS required for production, HTTP allowed for localhost)
  • Model names and parameters (ranges for max_tokens, temperature, top_p)

Error Sanitization: API errors are automatically sanitized to prevent sensitive information leaks.

Monitoring:

address = client.get_wallet_address()
print(f"View transactions: https://basescan.org/address/{address}")

Keep Updated:

pip install --upgrade blockrun-llm  # Get security patches

Links

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

blockrun_llm-0.2.0.tar.gz (21.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

blockrun_llm-0.2.0-py3-none-any.whl (17.3 kB view details)

Uploaded Python 3

File details

Details for the file blockrun_llm-0.2.0.tar.gz.

File metadata

  • Download URL: blockrun_llm-0.2.0.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for blockrun_llm-0.2.0.tar.gz
Algorithm Hash digest
SHA256 672c2478f2c2aafe83b4b9ca0851e750918fc33446f4afe38013b1ad2c7734f6
MD5 c921630ee5f3ff5bdd61205703702d2c
BLAKE2b-256 4e17598ae1cc202f824d92262e53acc9c7dd857fdfb95a962b0657180094ea70

See more details on using hashes here.

Provenance

The following attestation bundles were made for blockrun_llm-0.2.0.tar.gz:

Publisher: publish.yml on BlockRunAI/blockrun-llm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file blockrun_llm-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: blockrun_llm-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 17.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for blockrun_llm-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57953b2c7a976c04d8f04890d24943f2dd336850433f7dda1e6d7e53450c062c
MD5 d06c8b478d03763f543fb2875d89daad
BLAKE2b-256 97871d4c03cc131977238018f45ac550e30e8a8a0bff03011172e9c8a9d2cfa5

See more details on using hashes here.

Provenance

The following attestation bundles were made for blockrun_llm-0.2.0-py3-none-any.whl:

Publisher: publish.yml on BlockRunAI/blockrun-llm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page