The API is free for casual use. For large-scale integrations, data pipelines, and production deployments — pay per request with SBC on Radius and get unlimited access. No API keys. No subscriptions. No sales calls.
Tier
Price
Endpoints
Rate Limit
Free
$0
All endpoints
120 req/min (global), 10 req/min (data endpoints)
Pay-per-request
$0.001 SBC
Data endpoints (/tx/*, /wallet/*)
Unlimited
Data endpoints (transaction lookups and wallet history) have a free tier of 10 requests per minute. Once exceeded, the API returns 402 Payment Required with a payment offer. Clients using radius-sdk handle this automatically. You can also opt into paying from your very first request — paying bypasses all rate limits entirely.
Paying for API Access
Payment uses the x402 protocol — an open standard for HTTP-native micropayments. Your client signs a payment, the server verifies it, and you get your data. No accounts, no tokens, no OAuth.
How it works
Request a data endpoint (/tx/* or /wallet/*)
If over the free limit, the API returns 402 with a PAYMENT-REQUIRED header
Your client signs a payment (0.001 SBC on Radius) and retries with a PAYMENT-SIGNATURE header
The server verifies and settles the payment, then returns the data
With radius-sdk, steps 2–4 happen automatically. Your code just makes a normal fetch() call.
TypeScript (radius-sdk)
import { createRadiusFetch } from 'radius-sdk/client'
const pay = createRadiusFetch({
signer: process.env.PRIVATE_KEY,
network: 'mainnet',
maxPerRequest: '$0.01',
})
// Just fetch — the SDK handles 402 → sign → retry automatically
const res = await pay('https://brale.network/api/tx/base/sbc/0xabc...')
const data = await res.json()
Python
import requests, json, base64
res = requests.get('https://brale.network/api/tx/base/sbc/0xabc...')
if res.status_code == 402:
offer = json.loads(base64.b64decode(res.headers['PAYMENT-REQUIRED']))
print(f"Payment required: {offer['accepts'][0]['amount']} atomic units")
print(f"Network: {offer['accepts'][0]['network']}")
print(f"Pay to: {offer['accepts'][0]['payTo']}")
# Sign and retry with PAYMENT-SIGNATURE header (see x402.org for details)
curl (inspect the offer)
# Hit the limit, then decode the 402 offer:
curl -sD- https://brale.network/api/tx/base/sbc/0xabc... | \
grep -i payment-required | cut -d' ' -f2 | base64 -d | python3 -m json.tool
Payment details
Field
Value
Network
Radius mainnet (eip155:723487)
Asset
SBC (0x33ad9e4BD16B69B5BFdED37D8B5D9fF9aba014Fb)
Price
$0.001 per request
Protocol
x402 v2 (EIP-3009 transferWithAuthorization)
Gas
Gasless — EIP-2612 Permit2 sponsored by facilitator
{
"error": {
"code": "NOT_FOUND",
"message": "Value type 'xyz' not found"
},
"status": 404
}
Error Codes
Code
HTTP Status
Meaning
NOT_FOUND
404
The requested resource does not exist. Check the ID or symbol.
VALIDATION_ERROR
400
Invalid request parameters.
PAYMENT_REQUIRED
402
Free tier exhausted on a data endpoint. Pay with SBC via the x402 offer in the PAYMENT-REQUIRED header, or wait for the rate limit to reset.
RATE_LIMITED
429
Global rate limit exceeded (120 req/min). Wait for the Retry-After period.
INTERNAL_ERROR
500
Unexpected server error. Retry after a brief delay.
Rate Limits
Two tiers of rate limiting apply. Discovery endpoints (value types, prices, token lists) share the 120 req/min global limit. Data endpoints (/tx/*, /wallet/*) have a lower free tier of 10 req/min — after which you can pay per request for unlimited access.
Header
Description
X-RateLimit-Limit
Maximum requests per window (120)
X-RateLimit-Remaining
Requests remaining in current window
X-RateLimit-Reset
Unix timestamp when the window resets
Retry-After
Seconds to wait (only on 429 responses)
When rate limited, back off for the number of seconds in the Retry-After header. Do not retry immediately — exponential backoff is recommended.
For AI Agents
The Brale Network API is designed to be consumed by AI agents without any authentication barrier. There are no API keys, OAuth tokens, or session cookies. Every endpoint is open and free.
MCP Server
An MCP (Model Context Protocol) server is available at https://brale.network/api/mcp. It supports the Streamable HTTP transport and exposes all API endpoints as callable tools. Point your MCP client (Claude, ChatGPT, Cursor) to https://brale.network/api/mcp.
OpenAPI Spec
A machine-readable OpenAPI 3.1.0 specification is available at https://brale.network/api/openapi.json. Use it with function-calling LLMs, code generators, or SDK builders.
Content Negotiation
All explorer pages support Accept: text/markdown content negotiation. Agents that prefer markdown over HTML can request structured markdown from any page:
All errors return structured JSON with a code field. Agents should:
On NOT_FOUND (404): Check the ID/symbol. Use /value-type/list to enumerate valid IDs.
On PAYMENT_REQUIRED (402): Free tier exhausted on a data endpoint. Use radius-sdk/client to auto-pay, or wait for the rate limit window to reset (~1 min).
On RATE_LIMITED (429): Wait for Retry-After seconds, then retry.
On INTERNAL_ERROR (500): Retry once after 2-5 seconds. If persistent, the service may be temporarily unavailable.