Skip to main content
Some campaigns only reward positions that entered through the Boost Forwarder. If you want your users to earn from one of those, your deposit flow has to route through it. This guide covers how to tell, and what to build. The product-level version of this mechanic is Earning Activation; read that for why a campaign would require it. This page is the implementation.

When You Need This

A campaign carries requiresForwarderDeposit: true. Two things follow:
  • Discovery hides it by default. campaigns.list and campaigns.active exclude forwarder-required campaigns unless you pass includeForwarderRequired: true, so integrations that do not route through the Forwarder never surface campaigns their users cannot earn from.
  • campaigns.get returns it regardless. If you already have the ID, the flag never blocks a read.
Activation is a one-time event. Once a user’s first deposit routes through the Forwarder, every later action (deposits, withdrawals, transfers) counts normally. They never have to use the Forwarder again.

List Supported Targets

A target looks like this:
There is no withdraw path through the Forwarder. Every registered target supports deposits only. Users exit through the protocol directly, exactly as they would without Boost, and doing so does not affect their activation.
Call this endpoint to preflight your UI: if a campaign’s target is not in the list, do not offer the deposit.

Build the Deposit

The SDK takes the campaign’s target object and flattens it for you; over raw REST you send targetChainId and targetAddress as separate top-level fields. receiver is optional and defaults to sender. The response is an ordered list of unsigned transactions. An ERC-20 approval is included only when the sender’s current allowance is insufficient, so the list is one or two entries depending on state. Do not assume a fixed length. The response also echoes back target, forwarderAddress, and two constants that describe what was built: action: "deposit" and flow: "direct". Both are single-valued in V1; treat a different value as a signal to re-read these docs. For a multi-asset target, pass inputToken to choose the asset. Only two multi-asset targets exist today: Lido Earn ETH (WETH, wstETH, native ETH) and Lido Earn USD (USDC, USDT):
Omit inputToken and the deposit uses the target’s default acceptedToken. Passing a token the target does not accept raises TbiValidationError, as does an unregistered target.

Submit in Order

Wait for each transaction to confirm before sending the next. The deposit will revert if the approval has not landed.

V1 Limits

buildDeposit supports direct, same-chain deposits into registered targets. There is no swap or bridge routing in this endpoint; the input asset must be one the target accepts, on the chain the target lives on.

Keep Exploring

Earning Activation

Why a campaign requires Forwarder deposits, and what it does and does not restrict.

Campaigns, IDs, and Chains

Target shapes and what discovery returns.