VYLO
Launch App
Developers

API reference

Public JSON endpoints. Every response is Solana mainnet data, no key required.

Basics#

  • Base path: /api/v1 on the VYLO domain.
  • Responses are JSON with a network field set to mainnet-beta.
  • Pool endpoints are cached for 60 seconds; wallet reads are never cached; token analysis is cached for 30 seconds.
  • Errors return { error: string } with status 400 (bad input), 404 (not found) or 502 (upstream RPC error).

Endpoints#

Method and pathReturns
GET /pools?protocol=&q=&limit=Scored pools. protocol: bins | range | hybrid | classic (pool family). q: symbol search. limit: up to 500 (default 100).
GET /pools/:idOne pool from the live index, or 404.
GET /opportunities?risk=Ranked pools with score components and the methodology text. risk: low | medium | high.
GET /tokens/:mintMint analysis: token program, decimals, supply, authorities, Token-2022 extensions, holder concentration, warnings.
GET /wallet/:addressToken balances of a wallet at live market prices, with a USD total.
GET /protocol/economicsFee split and program deployment status.
GET /healthStatus of every data source.

The pool object#

typescript
interface ScoredPool {
  id: string;                 // pool address
  protocol: "bins" | "range" | "hybrid" | "classic"; // pool family
  type: "classic" | "concentrated" | "discrete" | "stable" | "dynamic" | "launch";
  base: Asset; quote: Asset;  // { mint, symbol, name, decimals, logoURI, category }
  feeBps: number;             // may be fractional
  tvlUsd: number; volume24hUsd: number; fees24hUsd: number;
  price: number; priceMin24h: number | null; priceMax24h: number | null;
  priceHistory: number[] | null;
  createdAt: number | null;   // ms
  score: {
    feeEfficiency: number; liquidity: number; capitalEfficiency: number;
    stability: number | null; maturity: number | null;
    total: number; risk: "low" | "medium" | "high";
  };
}

Example#

typescript
const res = await fetch("https://<vylo-domain>/api/v1/opportunities?risk=low");
const { opportunities, methodology, sources } = await res.json();

for (const p of opportunities.slice(0, 5)) {
  console.log(p.base.symbol, p.quote.symbol, p.protocol, p.score.total);
}