API
Base path: /api/v1. The OpenAPI document is available at /api/openapi.json.
Public reads
GET /config— network, contracts, assets, terms, APY, penalties, unbonding, and fee.GET /oracle/price?asset=FUEL|stFUEL— validated O2 FUEL bid, ask, source asset, source contract, observation time, and pricing basis; cached for 15 seconds. Testnet stFUEL returns the same per-unit price withpricingBasis: O2_FUEL_1_TO_1.GET /oracle/quote?asset=FUEL|stFUEL— fresh nonce-bearing Vault quote signed for the selected collateral asset; returned withCache-Control: no-store.GET /positions?status=&cursor=&limit=— paginated positions.GET /accounts/:address/positions— indexed fallback, escrow, and historical positions for a Fuel address. Connected held positions are hydrated directly from Vault calls and wallet NFT UTXOs.GET /market/orders?status="eAsset=&cursor=&limit=— cursor-paginated ask board, capped at 100 rows per request. No bid endpoint exists yet.GET /market/orders/:id— one order and position.GET /market/activity— bounded recent events.GET /stats— indexed vault, issuance, market-health, and 24-hour flow totals.GET /market/stats— market-compatible view of the same current snapshot.GET /admin/coverage— public liabilities, reserves, and reconciliation status used by the admin UI.
Amounts are returned as decimal strings. Indexed records include source block and event ID. Cursor limits are capped at 100.
Faucet
The testnet app sends every wallet through the official Fuel gas faucet first. For Burner Wallet, it waits for that gas in the background and then calls TestAssets automatically. Fuel Wallet and Fuelet users explicitly select Give me testnet assets after starting the gas-faucet flow. POST /faucet is an inactive service-binding fallback and returns an unavailable response unless a server-side faucet service and token are explicitly configured. tUSDC minting remains owner-only.
Internal ingestion
POST /internal/events accepts at most 500 normalized events and requires Authorization: Bearer <INDEX_TOKEN>. Raw batches are compressed into R2 before idempotent D1 reduction. This endpoint is operational infrastructure and is not a transaction authority.
Errors use { "error": "..." } with an appropriate HTTP status. Public successful read responses are cached briefly; errors, signed oracle quotes, and authenticated writes are not cached. Testnet stFUEL uses the FUEL source at 1:1; mainnet stFUEL remains unavailable.