agentdata.networkSource

infiniFi Data

Service ID infinifi · REST · results variable · public

A Pocket Network REST service that gives agents read-only access to the infiniFi protocol: yields, farms, redemptions, allocation votes, partner opportunities, and any wallet's positions, profit, history, and points. It is a pass-through. Every answer comes from infiniFi's own API at request time, reshaped for agents. The service never signs, prepares, or submits a transaction, and it is not affiliated with infiniFi.

Service ID: infinifi · rpc_type: REST · compute_units_per_relay: 50000 · results: variable

Endpoints

Every data endpoint is POST with a JSON body. Those with no required input also answer GET with their defaults. Every response, errors included, is a JSON object carrying fetched_at (when infiniFi answered) and stale (true when infiniFi was down and a cached copy was served).

Protocol

Path Body Returns
/v1/overview — TVL, liquid/illiquid split, iUSD supply (staked, locked, unwinding), siUSD rate and APYs, lock-tier and farm counts
/v1/yields min_weeks, max_weeks, include_empty siUSD and each liUSD tier (1–13 weeks): exchange rate, 1/7/30-day APY, amount locked, empty flag
/v1/farms chain, type, include_paused, min_apy, sort Where the USDC is deployed: APY, assets, maturity, redemption bucket, description
/v1/farm address or name Every farm matching; one name can exist on several chains
/v1/params — Reserve ratio, illiquid target, return and per-week bucket multipliers
/v1/redemption-queue — Total waiting, when fully funded, tickets
/v1/redemption-quote amount_iusd Whether that redemption pays out now or joins the queue
/v1/allocation-votes epoch (default current) Vote split across farms, with farm names
/v1/opportunities chain, protocol, asset Partner yield opportunities with APY, TVL, points multipliers, dates, infiniFi's link

Wallet (address required)

Path Extra body Returns
/v1/wallet — One-call summary: current value, profit, unwinding, redemptions, points rank
/v1/wallet/pnl — Profit in iUSD: staked, per lock tier, unwinding; by chain
/v1/wallet/history kind (tvl/pnl), days (7, 30, 90, 365, "all"), by_chain USD series
/v1/wallet/unwinding — Positions currently unlocking
/v1/wallet/redemptions — Place in the queue, USDC claimable
/v1/wallet/votes epoch The wallet's allocation votes
/v1/wallet/points detail Rank, finalized points, multipliers, per-chapter points (per-source with detail)

Plus GET / (RelayMiner ping), GET /healthz, GET /v1/version, GET /v1/capabilities, GET /v1/openapi.json.

POST /v1/wallet  {"address": "0x46a83dc1a264bff133db887023d2884167094837"}
{
  "service": "infinifi", "fetched_at": "2026-10-15T19:09:19.276Z", "stale": false,
  "value_usd": 1132636.83,
  "pnl_iusd": {"total": 203261.30, "staked": 55029.39, "locked": 128551.56, "unwinding": 19680.34},
  "unwinding": {"count": 0, "positions": []},
  "redemptions": {"claimable_usdc": 0, "enqueued_iusd": 0, "fully_funded_at": null, "tickets": []},
  "points": {"rank": 10, "total_finalized_points": 335584.16, "current": {"episode": 11, "chapter": 3}},
  "missing": []
}

Units: APYs are fractions (0.062 = 6.2%). Token amounts are whole tokens, not base units. amount_iusd is converted to infiniFi's 18-decimal units exactly, without floating point.

How it maps to infiniFi

infiniFi publishes no API reference; its docs point to a private backend repository. The endpoint list here was read from the app's own bundle (app.infinifi.xyz) on 2026-10-15, and every call was checked live. api.infinifi.xyz/api (what the app calls) and eth-api.infinifi.xyz/api serve identical data. Outside /api/*, both hosts show a Cloudflare browser challenge.

Ours infiniFi
overview, yields, farms, farm, params GET /protocol/data (one 30 KB payload, shared)
redemption-queue GET /protocol/redemptions/
redemption-quote GET /simulate/redemptions?amount=
allocation-votes, wallet/votes GET /protocol/votes/{epoch}[/{addr}]
opportunities GET /points/integrations
wallet/pnl GET /protocol/pnl/{addr}
wallet/history GET /protocol/user-history/{tvl|pnl}/{addr}?daysAgo=
wallet/unwinding GET /protocol/unwinding/{addr}
wallet/redemptions GET /protocol/redemptions/{addr}
wallet/points GET /points/v2/user/{addr}
wallet five of the wallet calls, in parallel

What the reshaping does, and nothing more: snake_case names, numbers instead of fixed-point strings, chain names instead of MAINNET/BASE/MONAD, ISO timestamps, a numeric farm APY where infiniFi sometimes sends a string, absolute links where infiniFi sends app paths, farm names joined onto vote rows, and an empty flag on lock tiers holding less than IF_EMPTY_TIER_IUSD (several hold only a ~1 iUSD placeholder deposit).

Design notes

Configuration

IF_* environment variables, all optional (see backend/config.js): IF_UPSTREAM_BASE, IF_APP_BASE, IF_UPSTREAM_DEADLINE_MS (8000), IF_PROTOCOL_TTL_MS (60000), IF_SLOW_TTL_MS (300000), IF_STALE_MAX_MS (900000), IF_EPOCH_TTL_MS (600000), IF_EMPTY_TIER_IUSD (100), IF_MAX_BODY_BYTES (16384). No key is needed; the infiniFi API is public.

Run and test

cd backend
npm test          # offline: a mock upstream serves real infiniFi payloads from test/fixtures/
node server.js    # live, on :8080 (PORT to change)

Then, against the running backend, the Skill's linter:

python <service-builder>/skills/pocket-service-builder/scripts/lint_backend.py --base-url http://127.0.0.1:8080 --card infinifi/card.json

Deploy

deploy/docker-compose.yaml starts only the backend on the supplier's pocket-supplier network. deploy/relayer-service.yaml is the relayer block, and deploy/add-to-relayer.sh merges it into a network's relayer config. deploy/rendered/ holds the Skill's rendered stake configs, SAGE entry, and health-check entry. deploy/relay-test.sh sends relays through the protocol with pocket-ap. It takes the application key only from POCKET_APP_PRIVATE_KEY or deploy/app-key.hex, as exported by the Service Manager; there is no keyring fallback. Registration, staking, and deployment are done in the Pocket Service Manager.