Metered routes and payment responses

Resource prices, billing modes and the proprietary 402 envelope.

Last updated: Sep 30, 2026

Current billing state

All eight data routes currently run in observe by owner decision. The generated inventory below reads actual handler wrappers and this application instance’s configuration. It lists advertised prices; it does not imply active billing. GET and POST on a shared path appear together. All data-route access uses the existing read permission, including when billing is enabled.

Response headers

  • X-Credits-Price advertises credits per call.
  • X-Payment-Notice explains observe_mode_no_charge, enforcement_pending, terms_required or billing_unavailable.
  • X-Credits-Charged and X-Credits-Remaining describe a charged call.
  • X-Credits-Refunded reports a refund where applicable.

402 response

For insufficient credit on a metered data call the envelope contains x402Version: 1 and an accepts list with scheme ftsobest-prepaid-router. This is a discovery envelope for our prepaid flow, not an exact payment instruction. maxAmountRequired is 0; fetch a real quote from the topup endpoint. Do not pay zero or infer an amount from that field. The extra object links to the flow and carries its USD anchor. Browser sessions may additionally receive topupPage. Anonymous enforcement is currently pending and must not be presented as active charging.

{
  "x402Version": 1,
  "error": "insufficient_credits",
  "code": "insufficient_credits",
  "accepts": [
    {
      "scheme": "ftsobest-prepaid-router",
      "network": "flare",
      "maxAmountRequired": "0",
      "extra": {
        "flow": "challenge -> token -> topup(authorization, asset optional) -> router.pay(tx) -> confirm(txHash) -> retry with Bearer"
      }
    }
  ]
}

This is a shortened envelope, not a complete schema. Subscription capacity failures instead use code slot_required or insufficient_credits with purchase and buyEndpoint/topupEndpoint information; they do not promise the same accepts envelope.

Read a data route

curl -i 'https://ftso.app/api/ftso/analytics/overview?chain=flare' \
  -H 'authorization: Bearer fbx_READ_TOKEN'

See the operation reference for management APIs and topups for funding the balance.

Metered data routes

  • GET /api/ftso/analytics/board — ftso-analytics: 1 credits per call; Scope: read; mode: observe.
  • GET /api/ftso/analytics/movers — ftso-analytics: 1 credits per call; Scope: read; mode: observe.
  • GET /api/ftso/analytics/overview — ftso-analytics: 1 credits per call; Scope: read; mode: observe.
  • GET /api/ftso/analytics/volatility — ftso-analytics: 1 credits per call; Scope: read; mode: observe.
  • GET /api/intelligence/trust-radar — trust-radar: 5 credits per call; Scope: read; mode: observe.
  • GET/POST /api/providers/{chain}/rewards — providers-rewards: 2 credits per call; Scope: read; mode: observe.
  • GET /api/rewards-intelligence/external-rewards/scan — rewards-intelligence-scan: 10 credits per call; Scope: read; mode: observe.
  • GET /api/rewards-intelligence/reports — rewards-intelligence-reports: 10 credits per call; Scope: read; mode: observe.