Brale Network API

The Network API enables you to view information about value types and transfer types tracked by our services.

Getting Started

The Brale Network API is free and open — no API keys, no signup, no authentication. Choose how you want to integrate:

Option 1: curl / HTTP

Start querying immediately from any language or tool:

curl https://brale.network/api/value-type/list

Option 2: MCP (AI Agents)

Point your MCP client (Claude, ChatGPT, Cursor) at the server:

MCP endpoint: https://brale.network/api/mcp

Option 3: CLI

Query from the command line with zero setup:

npx @bralenetwork/cli value-types

Option 4: OpenAPI SDK Generation

Generate a typed client in any language from the OpenAPI 3.1 spec:

npx openapi-typescript https://brale.network/api/openapi.json -o brale.d.ts

Pricing

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.

TierPriceEndpointsRate Limit
Free$0All endpoints120 req/min (global), 10 req/min (data endpoints)
Pay-per-request$0.001 SBCData 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

  1. Request a data endpoint (/tx/* or /wallet/*)
  2. If over the free limit, the API returns 402 with a PAYMENT-REQUIRED header
  3. Your client signs a payment (0.001 SBC on Radius) and retries with a PAYMENT-SIGNATURE header
  4. 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

FieldValue
NetworkRadius mainnet (eip155:723487)
AssetSBC (0x33ad9e4BD16B69B5BFdED37D8B5D9fF9aba014Fb)
Price$0.001 per request
Protocolx402 v2 (EIP-3009 transferWithAuthorization)
GasGasless — EIP-2612 Permit2 sponsored by facilitator
Explorernetwork.radiustech.xyz

Gated endpoints

MethodPathFree tierPaid
GET/tx/:transfer_type/:value_type/:hash10/minUnlimited
GET/tx/:transfer_type/:hash10/minUnlimited
GET/tx/:hash10/minUnlimited
GET/wallet/:transfer_type/:address10/minUnlimited
GET/wallet/:address10/minUnlimited

All other endpoints (value types, transfer types, prices, token lists, LLM context, MCP) are always free with no payment required.

Base URL

https://brale.network/api

No authentication required. Discovery endpoints are always free. Data endpoints have a free tier with optional pay-per-request for unlimited access.

Endpoints

Value Types

MethodPathDescription
GET/value-type/listList all value types
GET/value-type/:idSingle value type by symbol (e.g. SBC, USDC)
GET/value-type/:id/transfer-type/listTransfer types that carry this value type

Transfer Types

MethodPathDescription
GET/transfer-type/listList all transfer types
GET/transfer-type/:idSingle transfer type by slug (e.g. base, solana)
GET/transfer-type/:id/value-type/listValue types available on this transfer type

Prices

MethodPathDescription
GET/price/listReference prices and 24h primary-market activity for all value types
GET/price/:value_typePrice and primary market data with per-chain breakdown
GET/price/:value_type/:transfer_typePrice and primary market data scoped to a single chain

Token List

MethodPathDescription
GET/tokenlist/brale.jsonAll value type deployments
GET/tokenlist/uniswap.jsonEVM-only deployments
GET/tokenlist/:transfer_typePer-transfer type list

LLM Context

MethodPathDescription
GET/llms/value-types.jsonValue types as structured AI context
GET/llms/transfer-types.jsonTransfer types as structured AI context
GET/llms/static-context.jsonComplete value layer context

Response Shapes

All list endpoints return { "data": [...] }. Single-resource endpoints return { "data": { ... } }. Key fields for each resource type:

Value Type

FieldTypeDescription
idstringUnique identifier (e.g. ast_sbc)
symbolstringTicker symbol (e.g. SBC, USDC)
display_namestringHuman-readable name
descriptionstring | nullShort description of the value type
decimalsintegerToken decimal precision
logo_urlstring | nullCanonical logo image URL (SVG preferred)
website_urlstring | nullProject website
programobject | nullIssuing program with name, operator, and verified status
transfer_typesarrayChains this value type is deployed on
contract_addressesobjectMap of chain slug to contract address

Transfer Type

FieldTypeDescription
idstringUnique identifier (e.g. chn_base_mainnet)
slugstringURL-safe slug (e.g. base, solana)
display_namestringHuman-readable name
ecosystem_familystringEcosystem (evm, svm, canton)
native_symbolstringNative gas token symbol (ETH, SOL)
statusstringactive or inactive
logo_urlstring | nullCanonical chain logo URL (SVG preferred)
explorer_urlstring | nullBlock explorer base URL
value_typesarrayValue types available on this chain

Examples

List all value types

curl https://brale.network/api/value-type/list

Get SBC and its transfer types

Returns SBC with every transfer type it's deployed on and each contract address.

curl https://brale.network/api/value-type/sbc

Which value types are on Base?

curl https://brale.network/api/transfer-type/base/value-type/list

Get the price of rUSD

curl https://brale.network/api/price/rusd

Value types on Solana

Returns all value type deployments on Solana in Uniswap Token List format.

curl https://brale.network/api/tokenlist/solana

AI context for the full value layer

Structured context describing all value types, transfer types, and contract addresses. Feed this to an LLM.

curl https://brale.network/api/llms/static-context.json

Error Handling

All errors return a consistent JSON structure:

{ "error": { "code": "NOT_FOUND", "message": "Value type 'xyz' not found" }, "status": 404 }

Error Codes

CodeHTTP StatusMeaning
NOT_FOUND404The requested resource does not exist. Check the ID or symbol.
VALIDATION_ERROR400Invalid request parameters.
PAYMENT_REQUIRED402Free 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_LIMITED429Global rate limit exceeded (120 req/min). Wait for the Retry-After period.
INTERNAL_ERROR500Unexpected 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.

HeaderDescription
X-RateLimit-LimitMaximum requests per window (120)
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when the window resets
Retry-AfterSeconds 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:

curl -H "Accept: text/markdown" https://brale.network/valuetype

Discovery Files

URLPurpose
/llms.txtLLM-optimized site description
/llms-full.txtComplete documentation in one file
/.well-known/mcp/server-card.jsonMCP server capabilities
/.well-known/agent-card.jsonA2A agent card
/.well-known/ai-plugin.jsonOpenAI plugin manifest
/?mode=agentStructured JSON overview for agents

Error Recovery for Agents

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.