Skip to main content
The Yield Aggregator lets you move user funds into DeFi lending strategies on Solana, track on-chain balances, and rebalance between protocols. Build endpoints return unsigned Solana transactions (base64 wire). You sign them in your app, then either broadcast with your own RPC or use StarkFi’s optional yield broadcast.
The Yield Aggregator requires the yield product flag. Check GET /config/products (authenticated) before integrating.

Supported providers

ProviderIDDescription
Jupiter Lendjupiter_lendLending markets on Jupiter
KaminokaminoKamino vault lending
Both providers run on Solana. Use GET /yield/strategies to list live strategies, APY, TVL, and token metadata. Cache this response for up to 10 hours.

Typical flow

1

Discover strategies

GET /yield/strategies — all strategies.GET /yield/strategies/:symbol — filter by token symbol (e.g. USDC).
2

Build an operation

3

Sign the transaction

Sign the base64 wire returned in data.transaction (or data.details.transaction for rebalance) with the user’s wallet.
4

Broadcast (your choice)

Option A — Your RPC: send the signed transaction with your own Solana RPC (public or private).Option B — StarkFi yield broadcast: submit via POST /yield/broadcast if you prefer not to operate a private RPC. StarkFi relays and confirms the transaction for you.
5

Track earnings

GET /yield/earnings — live protocol balance for a wallet, asset, and provider.
StarkPay broadcast is still required. POST /payment/execute/on-chain must be used for all StarkPay on-chain payments. The optional broadcast described here applies only to Yield Aggregator operations.

Deposit fees

Deposit builds may include StarkFi and whitelabel fees embedded in the transaction. The response includes:
  • charged_starkfi_fee_amount
  • charged_whitelabel_fee_amount
  • starkfi_fee_percentage_applied
  • used_yield_starkfi_custom_fee

Rebalance modes

Cross-protocol rebalance sends provider_out (withdraw leg) and provider_in (deposit leg):
{
  "chain_name": "solana",
  "wallet": "<pubkey>",
  "asset": "USDC",
  "amount": "10.0",
  "provider_out": "kamino",
  "provider_in": "jupiter_lend"
}
When both legs use the same protocol, send a single provider field instead. The response returns an unsigned transaction in details.transaction with mode: single_transaction when instructions fit in one packet.

Rebalance opportunities

GET /yield/rebalance-opportunities compares APY across providers for a token.