> ## Documentation Index
> Fetch the complete documentation index at: https://docs.turtle.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Track changes to the Turtle Earn API.

## August 2026

**Wallet portfolio matches the app holdings payload**

* `GET /v1/wallet/{address}/portfolio` and `GET /v2/wallet/{address}/portfolio` now return the same holdings envelope as the main Turtle API `GET /wallet/{address}/balance` (the shape the app uses).
* The response is `{ portfolio: { productsEarnings, holdings } }`. Idle ERC-20 and native balances live under `holdings.wallets[].tokens`; structured DeFi positions live under `holdings.wallets[].protocols`.
* **Breaking:** the previous DeFi-only `{ total_stats, protocols }` top-level shape is gone from Earn. Read protocol positions from `portfolio.holdings.wallets[].protocols`.
* New query param `includeProtocolTokens` (default `false`) keeps protocol receipt tokens out of the token list so they are not double-counted with DeFi rows.
* Documented on [User Positions](/sdk/portfolio/positions).

## July 2026

**Deposit and withdraw: on-chain balance preflight**

* Deposit and withdraw endpoints now read the user's on-chain balance of `tokenIn` (or vault shares, for withdraw) before building the transactions.
* Requests where the wallet holds less than `amount` are rejected up front with `400 INVALID_ARGUMENT` and error `insufficient token balance`, instead of failing later on-chain.
* Documented on the [Deposit](/sdk/earn/deposit#error-handling) and [Withdraw](/sdk/earn/withdraw#error-handling) pages under Error Handling.

**Streams: 1.5% creation fee, with Turtle Pro exempt**

* Token streams now include a **1.5% creation fee**, charged in the reward token and pulled at stream creation on top of the net reward budget. Point streams remain free.
* **Turtle Pro organizations are exempt** (0%).
* The exact fee is surfaced as `FeeAmount` in the [create-stream](/sdk/streams/create-stream) response and shown on the Client Portal review screen before you confirm.
* See [Streams: before you start](/partner-products/streams/before-you-start) for prerequisites and funding requirements.

**Genesis Airdrop: in-app claiming**

* Eligible wallets can now check allocations and claim \$TURTLE directly in the [Turtle app](https://app.turtle.xyz) under **Your Earnings** on the [Liquidity Campaigns page](https://app.turtle.xyz/deals).
* Allocations are bound to the wallet used to contribute to the Turtle DAO — connecting a different wallet will show nothing to claim.
* Claiming once forfeits any unvested portion. Review [Vesting & Mechanics](/token/airdrop#vesting--mechanics) before you claim.
* Full walkthrough: [Genesis Airdrop](/token/airdrop).

## April 2026

**Documentation revamp**

* Added new pages: Authentication Overview, Opportunities Overview, Historical Data (stub), Earn API Overview, Swap Mode, Async Deposits, Portfolio Overview, Streams Overview, Distributor Model, Error Codes, OpenAPI Spec, and Changelog
* Removed Route API page
* Removed the `POST /v1/actions/attribute` endpoint; attribution is now fully automatic and documented in the [Distributor Model](/sdk/concepts/distributor-model) concept
* Retitled the distributor deposits page to "Distributor Activity" and grouped it with the wallet-scoped activity and positions endpoints under "Portfolio & Activity"
* Added three previously undocumented response fields to Opportunities: `minDepositAmountUsd`, `swapDirectEnabled`, `swapRouteEnabled`
* Added three previously undocumented query filters to Opportunities: `chainIds`, `depositToken`, `tvlGreaterThan`
