API Reference
Complete gRPC and REST API reference for the AXIO block engine — bundle submission, status, reputation, and analytics endpoints.
API Reference
AXIO exposes two APIs: a gRPC API (port 7440) for high-performance bundle submission, and a REST API (port 7435) for analytics, status, and staking data.
gRPC API (Searcher)
Endpoint: grpc://engine.axio.fortiblox.com:7440
Authentication
All RPC calls require an API key in the metadata:
x-api-key: <your-api-key>SubmitBundle (Unary)
Submit a single bundle for auction.
service AXIOEngine {
rpc SubmitBundle(BundleRequest) returns (BundleResponse);
}
message BundleRequest {
repeated bytes transactions = 1; // base64-encoded serialized transactions
uint64 tip = 2; // tip in lamports
string mev_type = 3; // "sandwich" | "arbitrage" | "liquidation" | "jit" | "unknown"
optional uint64 target_slot = 4; // target slot (default: next available)
optional bytes encrypted_payload = 5; // X25519-encrypted bundle (optional)
}
message BundleResponse {
string bundle_id = 1;
string status = 2; // "accepted" | "rejected"
optional string reason = 3; // rejection reason
optional uint64 tip_floor = 4; // current tip floor for reference
}SubmitBundleStream (Bidirectional Streaming)
Maintain a persistent connection for high-frequency submission:
service AXIOEngine {
rpc SubmitBundleStream(stream BundleRequest) returns (stream BundleConfirmation);
}
message BundleConfirmation {
string bundle_id = 1;
string status = 2; // "accepted" | "included" | "dropped" | "expired"
optional uint64 slot = 3;
repeated string signatures = 4;
}GetTipFloor (Unary)
service AXIOEngine {
rpc GetTipFloor(Empty) returns (TipFloorResponse);
}
message TipFloorResponse {
uint64 tip_floor = 1; // current tip floor in lamports
uint64 tip_floor_24h_avg = 2; // 24h average
double utilization = 3; // current block space utilization (0-1)
}GetReputation (Unary)
service AXIOEngine {
rpc GetReputation(Empty) returns (ReputationResponse);
}
message ReputationResponse {
double score = 1; // 0-100
string tier = 2; // "bronze" | "silver" | "gold" | "platinum"
double landing_rate = 3;
double sim_success = 4;
uint64 bundles_submitted = 5;
uint64 bundles_landed = 6;
}REST API (Rewards & Analytics)
Base URL: https://axio.fortiblox.com/api/v1
GET /api/v1/status
Health check. No authentication required.
{
"service": "axio-rewards-api",
"version": "1.0.0",
"status": "ok",
"uptime": 86400
}GET /api/v1/pool
Current stake pool state.
{
"tvl": 1247832,
"exchangeRate": 1.096,
"apy": 12.4,
"validatorCount": 47,
"axntSupply": 84291,
"baseApy": 7.2,
"mevApy": 5.2
}GET /api/v1/position/:wallet
User's staking position. Requires wallet address (base58).
{
"axntBalance": 142.5,
"valueInSol": 156.21,
"unrealizedRewards": 3.24,
"apyEarned": 12.4
}GET /api/v1/validators
List of validators in the AXIO network.
[
{
"address": "7Np41oe...",
"name": "FortiBlox #1",
"stake": 245000,
"apy": 13.2,
"commission": 5,
"mevScore": 98
}
]GET /api/v1/overview/:period
Overview metrics for a time period. Period: 1h, 24h, 7d, 30d.
{
"period": "24h",
"total_tips_earned": 12400000000,
"total_bundles_landed": 1842,
"avg_tip_per_bundle": 6731,
"landing_rate": 94.7
}GET /api/v1/apy
Current APY breakdown.
{
"current_apy": 12.4,
"base_apy": 7.2,
"mev_apy": 5.2,
"apy_7d_avg": 11.8,
"apy_30d_avg": 10.9
}GET /api/v1/exchange-rate
aXNT exchange rate and history.
{
"rate": 1.096,
"rate_change_24h": 0.12,
"rate_change_7d": 0.84,
"rate_change_30d": 3.41
}GET /api/v1/mev/breakdown
MEV revenue breakdown by type.
[
{ "type": "Sandwich", "bundles": 312, "revenue": 5.8, "percentage": 46.8 },
{ "type": "Arbitrage", "bundles": 187, "revenue": 3.4, "percentage": 27.4 },
{ "type": "Liquidation", "bundles": 94, "revenue": 2.1, "percentage": 16.9 },
{ "type": "Other", "bundles": 49, "revenue": 1.1, "percentage": 8.9 }
]GET /api/v1/charts/tvl?period=30d
TVL history for charting.
[
{ "timestamp": "2026-03-22", "value": 823000 },
{ "timestamp": "2026-03-23", "value": 841000 }
]GET /api/v1/charts/apy?period=30d
APY history for charting.
[
{ "timestamp": "2026-03-22", "value": 11.2 },
{ "timestamp": "2026-03-23", "value": 11.8 }
]GET /api/v1/dashboard
Aggregated dashboard metrics.
{
"tvl": 1247832,
"tvlChange24h": 3.2,
"apy": 12.4,
"baseApy": 7.2,
"mevApy": 5.2,
"bundlesLanded24h": 1842,
"bundlesTotal": 527,
"landingRate": 94.7,
"mevRevenue24h": 12.4,
"mevRevenueTotal": 847.3,
"validatorCount": 47,
"axntSupply": 84291,
"exchangeRate": 1.096,
"exchangeRateChange24h": 0.12
}POST /api/v1/bundles
Submit a bundle via REST (lower performance than gRPC — use for low-frequency submission).
Request:
{
"transactions": [
{
"data": "<base64-encoded-transaction>",
"accounts": [
{ "pubkey": "So1...", "isWritable": true }
]
}
],
"tip": 500000,
"mevType": "arbitrage"
}Response 202:
{
"bundleId": "d500d0bf-a73f-4a1b-a0ae-824d14e3ae45",
"status": "accepted"
}GET /api/v1/bundles/:id
Check bundle status.
{
"bundleId": "d500d0bf-...",
"status": "included",
"slot": 149900001,
"signatures": ["5K8rE..."]
}GET /api/v1/pnl?strategy=sandwich&period=24h
P&L accounting per strategy.
{
"strategy": "sandwich",
"period": "24h",
"totalRevenue": 5.8,
"totalCost": 0.3,
"netProfit": 5.5,
"bundleCount": 312,
"avgProfitPerBundle": 0.0176
}Rate Limits
| Endpoint | Limit |
|---|---|
| gRPC SubmitBundle | Per-searcher token bucket (see Searcher Guide) |
| gRPC Streaming | Per-searcher token bucket |
| REST /api/v1/* | 100 req/s per IP |
| REST /api/v1/bundles | 50 req/s per API key |
Error Codes
| Code | Meaning |
|---|---|
| 400 | Invalid request (bad base64, too many txs, tip below floor) |
| 401 | Missing API key |
| 403 | Invalid API key or insufficient permissions |
| 429 | Rate limited — back off and retry |
| 500 | Internal server error |
| 503 | Service unavailable (maintenance) |
Searcher Guide
Complete guide for MEV searchers — authentication, bundle submission, strategy optimization, and best practices on the AXIO engine.
Validator Guide
Complete onboarding guide for X1/Tachyon validators — build, configure, and run the AXIO-enabled validator to receive MEV bundles and earn tip revenue.