Skip to main content
The five reward models all run on the same Streams infrastructure: an indexer tracks the target token balance of every wallet, a reward updater computes accrued rewards about twice a day, and a Merkle root is committed on-chain so LPs can claim. What changes between models is how rewards accrue. Pick by your goal, not by the math.

Quick chooser

Your goalModel
Predictable cost per unit of TVLFixed Rate
Advertise a headline APRFixed APR
Fixed spend per day regardless of TVLDaily Budget
Manual or retroactive distributionAirdrop
Top up to a target yield, or double the vault yieldYield Match
Every model can pay either a token or points, and every model tracks a target token whose balance measures each wallet TVL contribution. The reward source and the target token are independent of the model you pick. See Before you start and the glossary for the terms used here.

Fixed Rate

You set a flat number of reward tokens per 1,000 USD of TVL per day. Each wallet earns in direct proportion to how much it holds, and your total emission rises and falls with the pool TVL. Cost per unit of TVL stays constant no matter how large the pool gets. Best for: a predictable, fixed cost for each dollar of liquidity you attract. Example: you pay 2 reward tokens per 1,000 USD per day. A wallet holding 50,000 USD of the target token earns 100 tokens a day. If the pool grows, your daily spend grows with it, but the rate each LP sees never changes. Decision parameter: tokensPerUSD. See Create a stream (API) for the exact format and base-units rules.

Fixed APR

You set an annualized percentage rate, for example 10 percent APR. At each snapshot, Turtle converts that APR into a per-day token figure using current prices, so the headline rate holds even as the token price moves. This is the model to use when you want LPs to see a clean APR number. Best for: advertising a headline APR in your marketing and on listings. Example: you set 10 percent APR. A wallet holding 50,000 USD of TVL earns roughly 5,000 USD worth of reward tokens over a year, paid out continuously as the stream runs. The token amount per day shifts with price so the percentage stays at 10. Decision parameter: apr. See Create a stream (API) for the exact format.

Daily Budget

You fix a daily token budget and it is split pro-rata across all participating LPs. The pool total stays flat, so per-user rewards fall as more TVL joins and rise if TVL leaves. Your spend is capped per day regardless of how much liquidity shows up. Best for: a fixed daily spend where you want to cap total cost, not cost per LP. Example: you budget 1,000 tokens a day. With 10 LPs holding equal amounts, each earns 100 tokens a day. If 10 more equal LPs join, the same 1,000 tokens now split 20 ways, so each earns 50.
The total emission is computed automatically from the daily budget times the duration, so you do not specify a total amount for this type.
Decision parameter: tokensPerDay. See Create a stream (API) for the exact format.

Airdrop

A manual or retroactive distribution with no automatic reward computation. You decide the allocations yourself and upload them through a dedicated snapshot endpoint. Use it to reward past activity or to run a one-off distribution on your own terms. Best for: setting allocations by hand, rewarding retroactively, or running a one-time payout. Example: you decide to reward 500 early depositors with a fixed grant each, based on a snapshot you took last month. You upload that allocation list and LPs claim against it. There is no continuous accrual. Allocations are uploaded through a dedicated snapshot endpoint rather than computed from a rate. See Create a stream (API) and the Streams API overview for how to submit them.

Yield Match

A dynamic rate derived from the vault performance. It runs in one of two modes, set at creation and locked for the life of the stream.
You set a targetApy, and the stream pays the difference between the vault native APY and your target. If the vault yields 7 percent and your target is 12 percent, the stream pays the 5 percent gap. If the vault already meets or exceeds the target, the stream pays nothing.Best for: guaranteeing depositors a minimum total yield without overpaying when the vault is already performing.
The mode is set by whether you provide targetApy. Gap-fill uses a targetApy; Mirror leaves it unset. The mode is locked at creation and cannot be changed later, so decide before you create the stream.
Decision parameter: targetApy for Gap-fill mode, or leave it unset for Mirror mode (with an optional apyOffset). Other optional knobs are targetApyTokenId, vaultApyLookbackDays (default 30), and dailyUSDRewardsCap. See Create a stream (API) for each.

Boost your campaign

Boost plugins run between the base reward computation and the final Merkle tree, so you can layer them on top of any model. Six are live today:
  • Turtle User: boost wallets registered as Turtle members.
  • X (Twitter): boost wallets with a verified X account link.
  • Telegram: boost wallets with a verified Telegram link.
  • Whitelist: restrict eligibility to a defined set of wallets.
  • Blacklist: exclude specific wallets.
  • Forwarder: forward rewards earned by a vault address to that vault underlying LPs (for example a Euler Earn Vault).
Two more are planned and not yet live: Kaito Yapper and Staking. Boosts are configured through the adapters array. See Create a stream (API) for the full plugin list and parameters.

Next steps

Create a stream

Walk through launching a stream from the Client Portal.

Create a stream (API)

Exact parameters, formats, and base-units rules for every model.