# Feel.cash

<figure><img src="https://3524517046-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8NY3dGkZWyHJmak5FvRK%2Fuploads%2Fgit-blob-747de08127913a7f8b1856d0eb702691604f9d19%2FGeneral.webp?alt=media" alt="Feel.cash"><figcaption></figcaption></figure>

## Where stocks meet internet culture.

Launch and trade stock-paired coins on Base and Robinhood Chain.

Discover coins built around the companies, products, and ideas you know. Launch a coin of your own, pair it with a supported tokenized stock, and give its community an onchain market.

A stock-paired coin trades in a liquidity pool with a tokenized stock, connecting its market to the company that inspires it. [Learn how stock pairing works](/start-here/what-is-feel-cash#what-is-a-stock-paired-coin).

Use Feel.cash on the web or on iPhone and Android through the App Store and Google Play.

[Open Feel.cash](https://feel.cash) · [Download the app](https://feel.cash/download)

## Every coin has a feeling. Design yours.

Most launchpads let you choose a name, ticker, and image. Feel.cash lets you shape the market itself.

**Trade Feeling** is the liquidity curve behind a coin: how its liquidity is distributed across price ranges and how the market responds as people trade. Choose a starting shape or draw your own, preview it, and take it live with the coin.

Add the identity with an uploaded or AI-generated image. Shape the trade. Launch both together.

[Design a Trade Feeling](/launch/trade-feeling)

## One balance. Every market in Feel.cash.

Cash is USDC on Base held in your wallet. Add it from an exchange, a listed chain or asset, or the on-ramp shown in the product. Feel.cash handles the conversion, chains, and gas for every route it quotes.

Buy on Base. Route into a market on another chain. Sell back into Cash. You keep one spending and settlement balance instead of preparing a different wallet for every market.

Before buying, inspect the coin's chain, complete contract address, live quote, price impact, and current market fee. Names and tickers are for discovery; the chain and contract identify what you are trading.

[Understand Cash](/use-feel.cash/cash) · [Add or withdraw Cash](/use-feel.cash/deposits-and-withdrawals) · [Learn how trading works](/use-feel.cash/trading)

## From an idea to a live market

| You bring          | Feel.cash turns it into                                           |
| ------------------ | ----------------------------------------------------------------- |
| A name and ticker  | A coin identified by its chain and complete contract address      |
| An image or prompt | An uploaded or AI-generated market identity                       |
| A Trade Feeling    | The liquidity curve frozen into the launch configuration          |
| Cash               | A launch payment and one balance for every route Feel.cash quotes |
| A community        | A market anyone can inspect, trade, and integrate                 |

Every new launch begins from the same legible defaults:

| Launch property                               | Feel.cash default                                           |
| --------------------------------------------- | ----------------------------------------------------------- |
| Total supply                                  | 1,000,000,000 tokens                                        |
| Launch allocation                             | 100% of supply in the pool; 0% reserved for creator or team |
| Starting fully diluted valuation (FDV) target | Approximately $10,000                                       |
| Creator LP withdrawal or migration            | Permanently unavailable                                     |
| Opening protection                            | Market fee decays from 50% to 1.5% over 15 seconds          |

[See how launches work](/launch/how-launches-work)

## Creator fees, settled in Cash.

At the standard 1.5% market fee, creators receive **85 bps — 0.85% — of completed buy and sell volume that pays the market fee**. During the first 15 seconds, the opening-protection fee is higher and follows the launch's onchain split while it decays to the standard rate.

The pool can collect fees in the launched coin and its paired asset. Feel.cash handles collection, conversion, and routing. The creator receives **100% of their creator share in USDC on Base**, through automatic settlement when conditions allow or an available claim—without collecting tokens, swapping fee inventory, or bridging payouts manually.

[Understand Creator Fees](/economics/creator-fees) · [See the full 150 bps fee split](/economics/fees)

## Every launch leaves a trail.

Official Feel.cash launches are built on Doppler and Uniswap v4 infrastructure. The chain, full contract address, launch transaction, pool, fee configuration, Trade Feeling, and complete onchain launch proof make the coin inspectable.

For exchanges and indexers, onchain provenance identifies candidates and the public API completes the officiality check with `officialFeelLaunch: true`. Names, tickers, images, and the `fee1` suffix are never enough on their own.

[Verify a launch](/developers-and-integrators/contracts) · [Use Public API v1](/developers-and-integrators/api) · [Read the integration guide](/developers-and-integrators/integration-guide)

## Every trade. A chance to win $1M.

Trade on Feel.cash or anywhere onchain. Every completed buy and sell of a coin tracked by Feel.cash adds to your daily ticket ownership automatically. **The more you trade, the more chances to win every day.**

[See how every trade counts](/use-feel.cash/every-trade-a-chance-to-win)

## Find your way in

* **New here:** [Start with what Feel.cash is and how it works](/start-here/what-is-feel-cash).
* **Launching:** [Design the coin and its market](/launch/how-launches-work).
* **Trading:** [Understand quotes, routes, fees, and execution](/use-feel.cash/trading).
* **Earning fees:** [See how creator fees become Cash](/economics/creator-fees).
* **Integrating:** [Identify and ingest official launches](/developers-and-integrators/integration-guide).
* **Verifying:** [Check the complete contract and provenance](/trust-and-safety/verification).

## Feel it. Launch it.

Name it. Shape it. Take the market live.

[Launch a coin](https://feel.cash/launch)

> **Risk notice:** Coins are speculative and can lose all of their value. Feel.cash does not guarantee liquidity, sellability, price, volume, or returns. A launch pool that cannot be withdrawn or migrated is not a guarantee of safety. Always inspect the live market before trading.


# What is Feel.cash?

**Where stocks meet internet culture.**

Launch and trade stock-paired coins on Base and Robinhood Chain.

Feel.cash connects the companies and products people follow with the coins and communities built around them. Discover a coin, inspect its market, or launch your own coin paired with a supported tokenized stock.

It is built for people who want to move quickly onchain. Feel.cash handles supported conversions, routing, and gas behind the scenes, while keeping each coin's contract, chain, market rules, and fees visible.

## What Is a Stock-Paired Coin?

A stock-paired coin trades in a liquidity pool with a tokenized stock. The coin and the tokenized stock are separate assets. The pairing does not make the coin a share in the company or mean its price will track the stock.

Check the paired asset, chain, complete contract addresses, liquidity, and available trading quote before participating. Supported pairing assets are shown in the launch flow.

## Every Coin Has a Feeling. Design Yours.

Trade Feeling lets a creator shape how liquidity is distributed across the coin's price journey. Choose a preset or draw the curve during launch, preview how it behaves, and freeze that configuration onchain when the coin goes live.

The result is not just a ticker and a pool. Each launch has its own identity, market shape, and canonical onchain record.

## What Every Coin Shows

Every coin page makes the information needed to identify and understand the market easy to find:

* a canonical page at `https://feel.cash/:slug`;
* a contract address and chain;
* a name, ticker, image, description, and social links;
* creator and deployer information;
* its Trade Feeling and fee configuration;
* its launch transaction, pool, and onchain provenance.

## Launch, Trade, Settle

Feel.cash brings the core market flow into one product:

1. **Launch:** create the coin and its onchain market.
2. **Discover:** open its canonical page and verify what you are trading.
3. **Trade:** buy or sell through supported in-app routes.
4. **Settle:** use one Cash balance, with settlement in USDC on Base.

## Supported Networks

| Network         | Chain ID | Role                                                        |
| --------------- | -------: | ----------------------------------------------------------- |
| Base            |   `8453` | Primary launch, trading, Cash, and settlement layer         |
| Robinhood Chain |   `4663` | Launch and trading network; Cash settlement remains on Base |
| Solana          |        — | Coming soon                                                 |

Network support does not mean you must manage a balance on every chain. For supported routes, Feel.cash handles the movement between your Cash balance and the market.

## Built Onchain

Official launches use Uniswap v4 market infrastructure. Contracts and trades execute onchain, so completed transactions are public and irreversible.

Feel.cash simplifies the route, not the risk. Prices can move quickly, liquidity can change, and any coin can lose all of its value.


# Cash

Cash is USDC on Base held in your wallet and used as the one balance across Feel.cash.

It is not a new token, a point, or an offchain credit. Feel.cash uses Base as the settlement layer so you can move between the markets shown in the product without managing a separate spending balance for every chain.

## Add Cash From Where You Already Are

The deposit screen lists the routes available for your account. They can start from:

* an exchange withdrawal;
* USDC sent directly on Base;
* another token or chain listed in the flow;
* the card or wallet on-ramp shown in the flow.

Choose an asset and network from that screen and Feel.cash routes and converts it into Cash automatically. The confirmation shows the asset, network, destination, and routing cost before you send.

Always follow the exact deposit instructions shown. Sending an unsupported asset or using the wrong network can permanently lose funds.

## What Cash Is Used For

* buying coins shown in Feel.cash;
* receiving proceeds from sells routed through Feel.cash;
* paying a launch fee when required;
* receiving creator and referral fees;
* sending or withdrawing USDC.

## Base Is the Settlement Layer

A market can live on another chain while your Cash remains USDC on Base. When Feel.cash shows an in-app route, it moves value to the market and settles the result back into Cash.

A cross-chain route has more than one step. It may remain pending while the destination step completes. Check the operation status before trying again.

## Your Wallet

Feel.cash uses Privy for sign-in and embedded wallets. Connect an external wallet where the product offers that option. Your wallet is the onchain source of truth for balances and transactions.

Completed onchain transactions cannot be reversed. Feel.cash cannot recover funds sent to the wrong address or through an unsupported network.


# Trading

Trade the coins shown in Feel.cash from Cash without manually preparing a wallet on every chain.

Every coin has a canonical page at `https://feel.cash/:slug`. Use that page to check the network, full contract address, live quote, market fee, and route before confirming a trade.

> **Opening protection:** for the first 15 seconds after a new launch, its market fee decreases linearly from 50% to the normal 1.5%. Read the current quote before trading at launch.

## Buy

1. Open the coin page.
2. Enter how much Cash you want to spend.
3. Review the expected output, price impact, market fee, route, and any routing cost.
4. Confirm the trade.

## Sell

1. Choose how much of the coin to sell.
2. Review the expected Cash output, price impact, market fee, and route.
3. Confirm the trade.
4. The quoted route settles the result into Cash on Base.

## One Cash Balance Across Chains

For a market on another chain, Feel.cash routes value from your Base Cash balance into the trade and settles sale proceeds back into Cash whenever that route appears in the quote. You do not need to bridge it manually.

Cross-chain trades can take longer than same-chain trades. Do not submit the same trade again only because the final balance has not appeared. Check the operation status and transaction links first.

## Gas

Feel.cash sponsors or abstracts gas on the in-app routes marked as gasless. You do not need to keep a separate gas token for those routes.

The network still consumes gas. An external-wallet action or a route not marked as gasless requires you to pay it directly.

## Fees

Feel.cash does not add a separate app trading fee to official Feel.cash coins. The coin's onchain market fee and any disclosed routing cost still apply.

Fee rules can differ for legacy coins. Treat the quote and the coin page as authoritative for the exact market you are trading.

## Quotes and execution

A quote is an estimate for a specific route and moment. Before signing, check:

* the minimum amount you can receive, not only the expected amount;
* price impact and the slippage tolerance applied to execution;
* the market fee, routing cost, and current opening-protection fee;
* the quote expiry and every chain involved in the route.

A trade can fail if the quote expires, the market moves beyond the permitted slippage, liquidity changes, or a route becomes unavailable. Cross-chain operations can also complete in stages. A failed or expired quote is not trading volume and does not produce market fees.

Public blockchains expose pending transactions and cannot eliminate front-running or other MEV risk. Review the final wallet request before signing.

## Before You Confirm

Contract addresses matter more than names or tickers. Confirm the full address, chain, expected output, price impact, and fee every time. Onchain trades are irreversible, and no price or return is guaranteed.


# Every trade. A chance to win $1M.

Feel.cash turns every completed buy and sell into a daily chance to win.

**Trade anywhere. The more you trade, the more chances to win every day.**

Buy or sell any coin tracked by Feel.cash—on Feel.cash or anywhere onchain. Every completed trade adds to your ticket ownership automatically. There is nothing extra to buy and no separate lottery account to manage.

## Every trade counts

Feel.cash tracks completed buys and sells across its coin catalogue, including:

* new Feel.cash launches;
* established coins such as Cody that remain in the Feel.cash catalogue;
* trades routed through Feel.cash;
* trades made elsewhere onchain and indexed by Feel.cash.

The wallet that makes the trade receives the ownership. The more volume that wallet trades, the greater its share of tickets for that day's drawing.

## How your chances grow

Feel.cash turns **0.10% of every buy and sell** into fractional ownership of specific $1 onchain tickets.

You do not need to reach a minimum trade size. Small trades receive a smaller share; larger trades receive a larger share; and your volume can span multiple tickets. Fully funded tickets are purchased hourly, while an incomplete ticket continues accumulating across hours.

Before the daily cutoff, Feel.cash may complete at most one remaining partial ticket so that its traders' final shares belong to a real ticket. This does not reduce or dilute anyone's ownership. If there are no trades, Feel.cash does not buy a ticket.

## Follow everything from the leaderboard

Open the **Traders** tab in the [Feel.cash leaderboard](https://feel.cash/leaderboard) to see:

* your completed buy and sell volume;
* how many tickets that volume represents;
* the specific tickets you own a share of;
* each ticket's five numbers and bonus ball after purchase;
* the winning numbers and result after the drawing;
* links to verify the tickets onchain.

The current drawing closes for new Feel.cash trades at **16:45 UTC** and draws at **17:00 UTC**. Trades completed after the cutoff count toward the next drawing. Previous drawings and results remain available from the same leaderboard.

## If your ticket wins

Your ownership belongs to specific tickets, not to a general Feel.cash prize pool. If one of those tickets wins, you receive the exact same percentage of the user prize as your ownership in that ticket.

Any portion funded by Feel.cash remains separate and never dilutes a trader's share.

If the trading wallet is already linked to a Feel.cash account, its prize can be paid to that account's Feel.cash wallet. If an external wallet has not been linked yet, its prize remains reserved until its owner links that wallet to Feel.cash.

## Powered by MegaPot

Feel.cash uses MegaPot as the onchain infrastructure behind the tickets and daily drawing. MegaPot runs on Base with 10 prize tiers and states that [**1 in 4 tickets wins something**](https://docs.megapot.io/getting-started/how-to-play/prize-structure). Odds and results are transparent and verifiable onchain.

Jackpot odds, the top prize, and the total prize pool can change from one drawing to the next. Feel.cash shows the current drawing rather than presenting a fixed jackpot probability.

Learn more about [how MegaPot works](https://docs.megapot.io/getting-started/how-it-works), its [prize tiers and odds](https://docs.megapot.io/getting-started/how-to-play/prize-structure), and [how drawings are verified](https://docs.megapot.io/getting-started/provably-fair). You should also review MegaPot's current [terms](https://docs.megapot.io/appendix/terms-of-service).

> A ticket creates a chance to win, not a guaranteed return. Prize pools, prize tiers, odds, and results come from MegaPot and can change by drawing. Trading coins is risky and can result in loss.


# Deposits and withdrawals

Feel.cash turns every deposit route shown in the product into one Cash balance: USDC on Base.

## Add Cash

Open the deposit flow and choose the route that matches where your funds are now. The screen lists the routes available for your account:

* withdraw from an exchange to the displayed deposit address and network;
* send USDC directly on Base;
* deposit a listed asset from another chain;
* use the card or wallet on-ramp shown in the flow.

Feel.cash handles the conversion into Base USDC for every route it quotes. Whichever listed route you choose, the result is Cash.

The deposit screen is authoritative. Confirm the asset, network, address, minimum amount, estimated output, and fees before sending. Do not send an asset or use a network that is not listed.

## Withdraw Cash

Choose **Withdraw**, enter the destination, and select one of the routes shown. The withdrawal screen can offer:

* USDC to a Base address;
* a cross-chain route;
* coin balances sent to a compatible wallet.

Before confirming, review the destination address, network, amount, estimated arrival, and routing cost. Bank withdrawals are only available when explicitly shown in the product.

## Deposits From Exchanges

When withdrawing from an exchange, copy the deposit details from Feel.cash into the exchange withdrawal form. The token and network must match exactly. An exchange may use its own processing time and withdrawal fee before the onchain transaction appears.

## Pending Operations

Deposits and withdrawals can cross providers and chains. A submitted operation may remain pending while every step settles. Use its transaction links and recorded status before retrying.

Completed onchain transfers are irreversible.


# How launches work

**Feel it. Launch it.**

A Feel.cash launch creates a coin, its Trade Feeling, and its market onchain in one flow. The important choices are visible before signing and immutable from the first trade.

## 1. Create the coin

Choose its name, ticker, description, chain, pairing, Trade Feeling, and optional dev buy. Upload an image or generate one with AI directly in the launch flow.

**Every coin has a feeling. Design yours.** Trade Feeling controls how the coin's liquidity is distributed across price ranges. Choose a preset or draw the curve, then review its behavior before launch.

Feel.cash checks the request and reserves its ticker and URL before anything is deployed.

### Choose the pool pairing

**WETH is the default and recommended pairing** for creators who want a market with more price movement. **USDC** is available when a dollar-denominated pair is a better fit. The selected pair is shown before signing and cannot be changed after launch.

On Robinhood Chain, the launch form can also show tokenized-stock pairings. Only the options displayed in the live form are available for that launch. The pairing determines the asset used to quote the coin, the assets collected by the pool, and how the coin's price responds when the paired asset moves.

## 2. Review the launch

The final review shows the chain, opening market configuration, fees, launch cost, and signing wallet.

New launches target an opening fully diluted valuation of approximately **$10,000**. Onchain price and tick rounding can move the exact value slightly. It is an opening configuration, not a guaranteed market cap, price, or liquidity level.

### Dev buy

An optional dev buy lets the creator purchase part of the supply as the coin goes live. It executes as the first transaction, before public traders and snipers, and is excluded from the sniper tax.

With the default Trade Feeling:

|  Dev buy | Approx. supply acquired | Approx. FDV after purchase |
| -------: | ----------------------: | -------------------------: |
|     $100 |                   0.98% |                     $10.4K |
|     $200 |                   1.93% |                     $10.7K |
|     $500 |                   4.58% |                     $11.9K |
|   $1,000 |                   8.46% |                     $14.0K |
|   $2,000 |                  14.67% |                     $18.6K |
|   $5,000 |                  26.29% |                     $33.9K |
|  $10,000 |                  38.37% |                     $50.6K |
|  $20,000 |                  52.85% |                     $94.1K |
|  $50,000 |                  68.52% |                    $362.3K |
| $100,000 |                  77.74% |                    $812.8K |

A dev buy is a market purchase, not a free creator or team allocation. The launch review shows the estimate for the selected amount and Trade Feeling.

## 3. Pay with Cash

Feel.cash calculates the launch price and free allowance on the server.

| Launch                                  |                            Price |
| --------------------------------------- | -------------------------------: |
| Base, while both free allowances remain |                             Free |
| Base, after either allowance is used    |                       $1 of Cash |
| Robinhood Chain                         | $1 of Cash from the first launch |

Base includes up to **3 free launches in a rolling 24-hour window** and **10 free launches over the lifetime of an account**. Both allowances must remain for the next Base launch to be free.

Cash payments settle in USDC on Base, including launches whose market is on Robinhood Chain.

## 4. Go live

Every new Feel.cash launch starts with the same transparent onchain defaults:

| Property                     | New launch                                               |
| ---------------------------- | -------------------------------------------------------- |
| Total supply                 | 1,000,000,000 tokens                                     |
| Supply placed in the pool    | 100%                                                     |
| Creator or team allocation   | 0%                                                       |
| Vesting allocation           | 0%                                                       |
| Dev buy                      | Optional; executes first and is excluded from sniper tax |
| Liquidity venue              | Uniswap v4                                               |
| Default pool pairing         | WETH; USDC can be selected                               |
| Liquidity migration          | Disabled                                                 |
| LP withdrawal by the creator | Not available                                            |
| Liquidity lock               | Permanent in the launch pool                             |
| Starting FDV target          | Approximately $10,000                                    |
| Opening protection           | Market fee decays from 50% to 1.5% over 15 seconds       |
| Trade Feeling                | Selected curve, frozen at launch                         |
| Contract pattern             | Starts with `0x` and ends in `fee1`: `0x…fee1`           |

The full token supply is placed into the market. The paired asset enters the pool as people buy; it is not a hidden creator allocation. No-op governance and migration keep the launch pool as the permanent pool, so the creator cannot pull the LP or move it elsewhere.

This lock describes what the launch configuration permits. It does not guarantee liquidity depth, balanced reserves, USD value, sellability, or a future market price.

## One payment, one launch

Payment and deployment are separate, recoverable steps. If payment succeeds and deployment is interrupted, retrying resumes the same launch instead of charging again or intentionally deploying a duplicate.

Keep the original launch open and retry it. Do not create a second launch to replace a pending one.

## What stays fixed

After deployment, the contract address, supply, pool, Trade Feeling, fee configuration, recipients, governance, and migration configuration cannot be changed for that coin. A later product update does not rewrite an existing launch.


# Base and Robinhood Chain

**Cash first. Chains behind the scenes.**

Feel.cash brings supported markets into one cash-native experience. The market can live on another chain while Cash and payouts use USDC on Base.

## Base

Base is Feel.cash's settlement layer.

| Property              | Value                             |
| --------------------- | --------------------------------- |
| Chain ID              | `8453`                            |
| Explorer              | [BaseScan](https://basescan.org/) |
| Cash and payout asset | USDC on Base                      |
| Opening FDV target    | Approximately $10,000             |
| Default pool pairing  | WETH                              |

Launch payments, Creator Fees, Referral Fees, deposits, and withdrawals settle through Base USDC. Feel.cash handles the necessary routing so users can work from one Cash balance.

Base launches default to WETH. Creators can select USDC when they prefer a dollar-denominated pair. Feel.cash recommends WETH for creators seeking more price movement; USDC removes movements in ETH/USD from the pairing. The final choice is visible before signing and becomes immutable at launch.

## Robinhood Chain

Feel.cash also supports markets on Robinhood Chain.

| Property             | Value                                                                |
| -------------------- | -------------------------------------------------------------------- |
| Chain ID             | `4663`                                                               |
| Explorer             | [Robinhood Chain Blockscout](https://robinhoodchain.blockscout.com/) |
| Market               | Robinhood Chain                                                      |
| Cash and payouts     | USDC on Base                                                         |
| Opening FDV target   | Approximately $10,000                                                |
| Default pool pairing | WETH                                                                 |

Cross-chain trades can take longer than Base-only trades. Feel.cash routes supported buys from Cash into the market and supported sells back to Cash.

### Stock pairings

Robinhood Chain launches default to WETH. They can also be paired with a tokenized stock when that option appears in the launch form. A pairing is hidden when its price feed or settlement route is not healthy enough for a new market.

A tokenized stock pairing is an onchain asset, not the underlying share itself. Availability and executable quotes can change with market hours, price-data freshness, paused assets, and route conditions. Review the asset and issuer information shown in the launch or trade flow before signing.

## Solana

Solana launches are coming soon. Portfolio or indexed-token support does not mean new Solana launches are available today.


# Trade Feeling

**Every coin has a feeling. Design yours.**

Trade Feeling is the shape of a coin's liquidity curve: how its liquidity is distributed across price ranges and how the market responds as people buy and sell.

## Draw the curve. Shape the trade.

During launch, choose a supported preset or shape the curve directly. The preview translates that choice into a market configuration and shows how liquidity is distributed across the journey.

Trade Feeling can change how quickly price moves through different ranges. It does not schedule trades, manufacture demand, guarantee liquidity, or force the market to follow the preview.

## Read the preview

The preview can estimate valuation ranges and the net buying needed to move through them. These values can change with:

* the live price of the paired asset;
* onchain tick spacing and rounding;
* fees and opening protection;
* routing and price impact; and
* other market activity.

Treat the preview as a description of the curve, not a price target.

## Default examples

The default Trade Feeling starts at approximately **$10,000 FDV**. The table below shows the estimated cumulative net buys needed to reach each level.

| Target FDV | Estimated net buys |
| ---------: | -----------------: |
|       $50K |             ≈$9.8K |
|      $100K |            ≈$21.1K |
|      $500K |            ≈$67.5K |
|        $1M |             ≈$116K |
|       $10M |             ≈$418K |
|      $100M |             ≈$927K |
|        $1B |            ≈$4.34M |

## Advanced mode: Degen

Trade Feeling also includes **Degen**, a hidden advanced mode for experienced devs. It uses a fixed, pump.fun-inspired liquidity curve with more token-side liquidity in the early price ranges, so the market moves through more supply before the curve steepens.

Degen starts at approximately **$2,500 FDV**, uses WETH as its pairing, and sits outside the normal Trade Feeling editor limits. Its distribution is fixed and cannot be customized.

[Learn how to unlock and use Degen →](/launch/trade-feeling/degen)

## Frozen at launch

Feel.cash validates the selected curve before deployment. Once the coin is live, its Trade Feeling is immutable. New presets or future product updates do not alter existing markets.


# Degen

**A hidden advanced mode for launches that need deeper liquidity at the beginning of the curve.**

Degen is an easter egg inside the Feel.cash launch screen. It does not appear with the standard Trade Feeling presets until you unlock it.

## Unlock Degen

1. Open **Launch a coin**.
2. Click or tap the **Feel.cash logo four times quickly**.

![Click the Feel.cash logo four times quickly to unlock Degen.](https://3524517046-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8NY3dGkZWyHJmak5FvRK%2Fuploads%2Fgit-blob-a8c31d80d108f0039a6149ad24b4907809c1fd91%2Fdegen-unlock-logo.png?alt=media)

3. Trade Feeling and Developer buy expand, and the Degen option appears.
4. Select Degen and review the complete launch preview before continuing.

The unlock applies to the current launch flow. Selecting another Trade Feeling returns you to the standard presets and their editing limits.

## How the curve works

Degen uses a fixed, pump.fun-inspired distribution across **10 price bands**, followed by a long-tail range. It allocates more token-side liquidity to the early ranges than the standard Feel.cash curve. This gives early participants more room to build exposure before the price reaches the steeper later ranges.

This does not add a hidden WETH reserve or give the creator a free allocation. The full token supply begins in the launch pool, and supply leaves the pool only through market purchases.

| Property               | Degen mode                                       |
| ---------------------- | ------------------------------------------------ |
| Starting FDV           | Approximately $2,500                             |
| Liquidity distribution | Fixed 10-band curve plus a long tail             |
| Pool pairing           | WETH only                                        |
| Total supply           | 1,000,000,000 tokens                             |
| Curve editing          | Not available                                    |
| Dev buy                | Optional                                         |
| Liquidity              | Permanently locked in the Uniswap v4 launch pool |

At deployment, the USD starting point is converted into WETH using the live ETH/USD reference and snapped to valid onchain ticks. The exact opening FDV can therefore differ slightly from $2,500.

## Approximate curve examples

The following examples show how cumulative buying moves through the fixed Degen distribution.

| Approximate buy | Supply acquired | Approximate FDV after buy |
| --------------: | --------------: | ------------------------: |
|            $200 |            7.1% |                     $3.2K |
|          $1,000 |           24.8% |                     $6.4K |
|          $5,000 |           65.0% |                    $17.1K |
|         $10,000 |           84.0% |                    $48.8K |
|         $15,000 |           89.9% |                     $149K |
|         $30,500 |           95.0% |                     $612K |
|        $152,500 |           99.0% |                    $15.3M |

These are curve estimates, not guaranteed execution results. Onchain tick rounding, routing, the paired asset price, price impact, and other market activity can change the final outcome.

## Optional developer buy

A developer buy is not required to use Degen. If set, it executes as the opening purchase before public trading, and the purchased tokens go to the creator wallet. The launch screen previews the estimated supply acquired and FDV after the selected buy.

There is no minimum developer buy for Degen. A team can launch without one and buy later through the public market instead.

## Sniper fees

**Disable sniper fees** is enabled by default when Degen is unlocked. It removes the opening surcharge while leaving the regular market fee in place. If a developer buy is set, this option stays enabled so the opening purchase uses the same flat-fee curve shown in the preview.

## Fixed after launch

The Degen distribution, pairing, opening configuration, and liquidity lock are immutable once the coin is deployed. Live Degen coins are identified by the Degen label on their coin page.


# Ticker and slug protection

Feel.cash protects fresh launches from immediate ticker copies while keeping contract addresses as the final source of truth.

## The 48-hour rule

Ticker checks apply across supported launch chains.

* One- and two-character tickers are reserved.
* Three-character tickers can require an established X account in supported launch flows.
* New tickers are protected for **48 hours** after launch.
* A coin that reaches at least **$100,000 all-time-high market cap** keeps permanent ticker protection.

After 48 hours, a ticker below the threshold can be used by another launch. This limits immediate copycat or vamp launches without granting permanent ownership to every inactive ticker.

Ticker protection is not verification or endorsement.

## Slugs and URLs

Every coin receives its own page:

```
https://feel.cash/:slug
```

When the preferred slug already exists, Feel.cash assigns a deterministic suffix such as `-1` or `-2`. A later coin can never take over an existing coin's URL.

## Reserved before deployment

Feel.cash reserves the ticker and slug before payment and deployment. The same reservation is reused if a launch needs to retry, preventing two concurrent requests from claiming the same identity.

Always verify a coin with its chain and full contract address. Official Feel.cash launch addresses end in `fee1`.


# Market fees

Feel.cash keeps trading fees simple. New launches have one **1.5% market fee** and no additional Feel.cash app trading fee.

The market runs on Uniswap v4. The fee applies wherever the same market is traded through a compatible route, not only inside the Feel.cash app.

## Fee split

The fee applies to both buys and sells. Its effective split is:

| Recipient               | Basis points | Effective rate |
| ----------------------- | -----------: | -------------: |
| Creator                 |   **85 bps** |      **0.85%** |
| Feel.cash               |     32.5 bps |         0.325% |
| Referrer                |       15 bps |          0.15% |
| Every trade tickets     |       10 bps |          0.10% |
| Protocol infrastructure |      7.5 bps |         0.075% |
| **Total market fee**    |  **150 bps** |      **1.50%** |

For every 100 USDC-equivalent of completed buys and sells that pay the market fee, the creator share is 0.85 USDC-equivalent and an amount equal to 0.10 USDC-equivalent funds [Every trade ticket ownership](/use-feel.cash/every-trade-a-chance-to-win). Reverted transactions and expired or cancelled quotes produce no trading volume or fees.

The creator and referral shares are separate. A referral does not reduce Creator Fees.

If a launch has no eligible referrer, the referral share follows the fallback configured for that launch. It is not added to the creator share.

## Opening protection

For the first 15 seconds after launch, the market fee decreases linearly from **50%** to the normal **1.5%**.

This makes immediate opening-block sniping more expensive. It cannot stop every bot, guarantee a fair distribution, or protect the market price. Always read the current quote before trading a coin that has just launched.

## Legacy coins

Some legacy coins were created through earlier Clanker-based infrastructure and keep the fee rules frozen at their own launch. Their live trade quote and onchain market configuration are authoritative; the 1.5% model above describes new Feel.cash launches.


# Creator Fees

**Creator fees, settled in Cash.**

Creators receive **85 basis points — 0.85% — of completed buy and sell volume that pays the market fee** in every coin they launch.

| Creator Fee    |                                            Value |
| -------------- | -----------------------------------------------: |
| Effective rate |                                           85 bps |
| Percentage     |                                            0.85% |
| Applies to     | Completed buys and sells that pay the market fee |
| Creator payout |                             100% in USDC on Base |

For example, $10,000 of completed combined buy and sell volume produces $85 in Creator Fees. The share comes from the coin's trading fee; Feel.cash does not add another creator charge on top. Reverted transactions and expired or cancelled quotes produce no volume or fees.

## From Every Pair to USDC

Feel.cash handles the settlement flow:

1. Trading fees accrue in the assets used by the pool.
2. Feel.cash collects the creator's share from both sides of the pair: the launched coin and its paired asset.
3. Those assets are converted to USDC.
4. The creator receives **100% of their 85 bps share in USDC on Base**.

The paired asset can be a native market asset or a supported tokenized stock pairing. The same flow applies when the market is on Robinhood Chain. Creators do not need to collect either asset, swap it, bridge it, or manage settlement themselves.

## Automatic settlement and claim

The system targets a daily settlement cadence when balances, route minimums, and chain conditions allow it. Creators can also claim an eligible available balance from the product.

Small balances may remain pending until they are economical to route. They continue to accrue rather than disappearing.

## Balance states

* **Accrued:** estimated fees produced by trading.
* **Available:** collected and eligible for settlement or claim.
* **Pending:** waiting for or moving through conversion and settlement.
* **Claimed:** USDC transferred to the creator on Base.

Only the final USDC transfer is a settled payout. Estimates can lag or change while source assets are collected and converted.

Creator Fees depend on real trading activity and are never guaranteed income.


# Referrals

Invite someone to Feel.cash and receive **15 bps (0.15%) of completed buy and sell volume that pays the market fee** from the coins they launch.

## Share your link

Every account has a unique referral link in its profile, using the format `https://feel.cash/r/<code>`. Copy that link from the referral screen and share it anywhere.

A new user can open the link before joining or enter the referral code from their profile. A user can choose another person's code to support them only while their account has no referrer. Once confirmed, the attribution cannot be replaced with a different referrer.

## Lifetime attribution

When a new user joins through a valid referral, the relationship is stored on their account. When they launch an eligible coin, the referrer's wallet is frozen into that coin's fee configuration.

That referral share lasts for the lifetime of the coin. The account relationship also applies to future eligible coins launched by the referred user.

## Across supported chains

Referral attribution works across supported launch chains. A coin can trade on Robinhood Chain while its Referral Fees are converted and settled in USDC on Base.

## Separate from Creator Fees

The creator receives **85 bps (0.85%) of completed buy and sell volume that pays the market fee**. The referrer's 15 bps is a separate share and does not reduce it.

Referral earnings appear in the referral section of the profile. Collected rewards are converted and settled in USDC on Base, alongside the rest of the user's Cash activity.

Self-referrals, farmed accounts, or manipulated attribution can be rejected. Referral Fees depend on real trading activity, successful fee collection, and settlement conditions; they are never guaranteed.


# Contracts and protocol

Feel.cash markets are designed to be easy to recognize and straightforward to index. The contract address and chain are always the canonical identity of a coin.

## Supported chains

| Item                | Base                              | Robinhood Chain                                      |
| ------------------- | --------------------------------- | ---------------------------------------------------- |
| Chain ID            | `8453`                            | `4663`                                               |
| Default market pair | WETH; USDC is selectable          | WETH or the pair recorded for the launch             |
| Cash settlement     | Base USDC                         | Base USDC after routing                              |
| Explorer            | [BaseScan](https://basescan.org/) | [Blockscout](https://robinhoodchain.blockscout.com/) |

Base USDC:

```
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
```

Base is the settlement layer for Cash, launch payments, Creator Fees, and Referral Fees. A market can trade on another supported chain while its cash settlement still arrives as USDC on Base.

## Onchain launch proof

Feel.cash launches through Doppler's Airlock contracts. The Airlock and integrator are not two separate proofs: they are two parts of the same creation transaction.

| Part                       | What it proves                                                          |
| -------------------------- | ----------------------------------------------------------------------- |
| **Doppler Airlock**        | The transaction used the expected deployment system on that chain       |
| **Feel.cash integrator**   | The `Airlock.create()` call recorded Feel.cash as the launch integrator |
| **Airlock `Create` event** | The transaction created the token address being checked                 |

The production integrator recorded in current Feel.cash creation calls is:

```
0x3879B1Ee8389FfeFb7afd51b1bafb9fAF23d6699
```

Airlock is chain-specific. The integrator is currently the same across supported EVM chains:

| Network         | Chain ID | Doppler Airlock                                                                                                                          | Feel.cash integrator                         |
| --------------- | -------: | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
| Base            |   `8453` | [`0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12`](https://basescan.org/address/0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12)                  | `0x3879B1Ee8389FfeFb7afd51b1bafb9fAF23d6699` |
| Robinhood Chain |   `4663` | [`0xeb7c034704ef8dcd2d32324c1545f62fb4ad0862`](https://robinhoodchain.blockscout.com/address/0xeb7c034704ef8dcd2d32324c1545f62fb4ad0862) | `0x3879B1Ee8389FfeFb7afd51b1bafb9fAF23d6699` |

To reproduce the onchain proof for a token:

1. a successful call to the Airlock listed for that chain;
2. the Feel.cash integrator in the decoded `Airlock.create()` calldata; and
3. the emitted `Create` event whose `asset` is the token being indexed.

These checks identify a launch with Feel.cash onchain attribution. They do not show that Feel.cash owns the token or holds user funds, and they are not a contract audit or creator endorsement.

The Airlock is shared infrastructure, and the integrator is an attribution value rather than a permissioned signature. Test or pre-rebrand records can carry the same onchain combination. Before presenting a launch as currently official, reconcile the token with the Feel.cash API and require `officialFeelLaunch: true`.

## The `0x…fee1` signature

Every EVM token contract address begins with `0x`. New official Feel.cash launch addresses are mined so the final four characters are `fee1`:

```
0x....................................fee1
```

The dots represent the rest of the 40 hexadecimal address characters; they are not part of the real address. Feel.cash verifies the complete address before broadcasting the launch transaction.

The `0x…fee1` pattern makes official launches easier to spot, but it is not proof on its own. Anyone can attempt to deploy an unrelated address with the same ending.

Always confirm the chain and complete contract address, complete [onchain launch proof](#onchain-launch-proof), pool, and Feel.cash API record.

## Current launch configuration

| Property                            | Current default                                |
| ----------------------------------- | ---------------------------------------------- |
| Token supply                        | 1,000,000,000                                  |
| Token supply placed in the pool     | 100%                                           |
| Creator allocation at launch        | 0%                                             |
| Creator LP withdrawal               | Not available                                  |
| Liquidity migration                 | Disabled; the launch pool is permanent         |
| Starting FDV target                 | Approximately $10,000                          |
| Uniswap v4 LP fee                   | 0%                                             |
| Market fee after opening protection | 1.5%                                           |
| Opening protection                  | 50%, decaying linearly to 1.5% over 15 seconds |
| Governance module                   | No-op                                          |
| Migration module                    | No-op                                          |

Markets use Uniswap v4 liquidity. The entire token supply enters the launch pool, governance and migration are disabled, and the creator cannot withdraw the LP position. The current deployment path uses Doppler/Airlock infrastructure to create the market and record the integrator; indexers do not need to depend on that provider name as the identity of a Feel.cash coin.

## What is immutable

The token contract, pool identity, curve, fee configuration, recipients, supply, salt, and integrator are fixed for each launch. Feel.cash cannot retroactively change those rules or replace a coin's contract.

Historical coins keep the configuration they launched with. Read each coin's record rather than applying today's defaults to every supported coin.

## Recommended verification sequence

1. Resolve the coin by chain and contract through the [Public API v1](/developers-and-integrators/api).
2. Confirm `officialFeelLaunch: true`.
3. Confirm the complete contract address and chain ID.
4. Confirm the creation transaction called the chain-specific Doppler Airlock.
5. Decode `Airlock.create()` and match the production integrator.
6. Match the token to the `asset` emitted in the Airlock `Create` event.
7. Inspect the pool and read the coin's own fee and market configuration.


# Public API v1

The Feel.cash API gives exchanges, indexers, wallets, screeners, and trading surfaces a coin-first view of supported launches. Public API v1 is live on `api.feel.cash`.

## Base URL

```
https://api.feel.cash/v1
```

Public launch data does not require authentication.

## Delivery and versioning

Public API v1 is **polling-only**. Feel.cash does not currently deliver launch webhooks, and there is no public sandbox or testnet API. Build against the production endpoint with conservative polling, cursor persistence, idempotent upserts, and retry handling.

The fields documented on this page are the stable v1 contract. Feel.cash can add fields without changing the version, so clients should ignore unknown fields. A breaking response or endpoint change will use a new API version.

## List launches

```http
GET /launches
```

```bash
curl "https://api.feel.cash/v1/launches?chain=base&limit=50"
```

### Query parameters

| Parameter       | Description                                   |
| --------------- | --------------------------------------------- |
| `chain`         | `base` or `robinhood`                         |
| `protocol`      | `doppler` or `clanker`                        |
| `launchedAfter` | ISO date or timestamp for incremental polling |
| `limit`         | Default `50`; maximum `100`                   |
| `cursor`        | Opaque cursor returned by the previous page   |

Do not combine `cursor` and `launchedAfter` in the same request.

Protocol is deployment metadata, not coin identity. Always use chain plus contract address as the primary key.

The list response wraps records and cursor state separately:

```json
{
  "launches": [],
  "pagination": {
    "limit": 50,
    "nextCursor": null,
    "hasMore": false
  }
}
```

## Resolve a coin

```http
GET /launches/:chain/:address
```

Live Base example with `officialFeelLaunch: true`:

```bash
curl "https://api.feel.cash/v1/launches/base/0x81bf939ca730ed2be27b37b7581b1a278aeafee1"
```

Live Robinhood Chain provenance example with `officialFeelLaunch: false`, illustrating why integrators must read the flag:

```bash
curl "https://api.feel.cash/v1/launches/robinhood/0xa5836d4ee8fd469bc4e2b06592651f3c1ebbfee1"
```

Resolution always uses the chain and complete contract address together. Never use an EVM address without its chain.

## Selected response fields

The response below shows the fields most useful to an exchange integration. Nullable fields remain `null` when the source is unavailable.

```json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "slug": "example-coin",
  "url": "https://feel.cash/example-coin",
  "contractAddress": "0x111111111111111111111111111111111111fee1",
  "chain": "base",
  "chainId": 8453,
  "name": "Example Coin",
  "symbol": "EXAMPLE",
  "decimals": 18,
  "description": "An example internet-native coin.",
  "imageUrl": "https://cdn.example.com/example.webp",
  "launchedAt": "2026-08-07T12:00:00Z",
  "officialFeelLaunch": true,
  "deployment": {
    "protocol": "doppler",
    "airlockAddress": "0x660eaaedebc968f8f3694354fa8ec0b4c5ba8d12",
    "integratorAddress": "0x3879b1ee8389ffefb7afd51b1bafb9faf23d6699",
    "createTransactionHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  },
  "market": {
    "poolId": "0x...",
    "numeraireAddress": "0x...",
    "numeraireSymbol": "WETH",
    "startingFdvUsdTarget": 10000,
    "marketFeeBps": 150,
    "lpFeeBps": 0,
    "antiSniperStartFeeBps": 5000,
    "antiSniperDecaySeconds": 15
  },
  "fees": {
    "creatorEffectiveBps": 95,
    "feelEffectiveBps": 32.5,
    "referrerEffectiveBps": 15,
    "protocolEffectiveBps": 7.5,
    "settlementChain": "base",
    "settlementAsset": "USDC",
    "netPotSplit": {
      "creator": 38,
      "feel": 13,
      "referrer": 6,
      "denominator": 57
    }
  },
  "metrics": {
    "priceUsd": 0.00001,
    "marketCapUsd": 10000,
    "circulatingMarketCapUsd": 10000,
    "liquidityUsd": 9000,
    "volume24hUsd": 1200,
    "change24hPercent": 4.2,
    "holders": 42,
    "lastUpdatedAt": "2026-08-07T12:05:00Z"
  },
  "creator": {
    "username": "example",
    "xHandle": "example"
  },
  "explorerUrl": "https://basescan.org/token/0x111111111111111111111111111111111111fee1"
}
```

## Fee precision

Display rates can use decimal basis points. Accounting systems should use the exact split returned in `fees.netPotSplit` and confirm settled onchain transfers.

```json
{ "creator": 38, "feel": 13, "referrer": 6, "denominator": 57 }
```

The split applies to the distributable market-fee balance after the protocol share has been retained. Do not recalculate payouts from rounded display rates.

## Official launch status

`officialFeelLaunch: true` means the launch is recognized by Feel.cash deployment records and onchain attribution. It is an officiality signal, not a contract audit, price guarantee, or endorsement.

## Onchain launch proof

For a Doppler launch, `deployment` exposes the chain-specific Airlock, Feel.cash integrator, and successful creation transaction. Together with the transaction's `Create` event, those fields form the [onchain launch proof](/developers-and-integrators/contracts#onchain-launch-proof). An exchange can use them to reproduce the [onchain launch filter](/developers-and-integrators/integration-guide#onchain-launch-filter).

The Airlock identifies the Doppler deployment system. The integrator identifies Feel.cash inside the decoded `Airlock.create()` input. The transaction receipt's `Create` event identifies the deployed asset.

Legacy records can use another `protocol` and return `null` for protocol-specific fields. Historical Doppler records can also have `null` fee-split or deployment fields when that source data was not recorded. A missing field must not be replaced with a current default when indexing historical launches.

Treat `name`, `symbol`, `description`, `imageUrl`, creator fields, and linked metadata as untrusted user content. Escape text for its output context, validate or proxy remote media, and never use a display field as coin identity.

## Errors

| Status | Meaning                                                      |
| -----: | ------------------------------------------------------------ |
|  `400` | Invalid chain, address, cursor, filter, or query combination |
|  `404` | No supported launch found for that chain and address         |
|  `429` | Rate limit exceeded                                          |
|  `500` | Internal query failure                                       |

```json
{ "error": "Launch not found", "code": "launch_not_found" }
```

## Caching and polling

Responses can include:

```
Cache-Control: public, max-age=60, s-maxage=300, stale-while-revalidate=600
```

The public launch API currently allows 120 requests per 60-second window per IP. Read `RateLimit-Limit`, `RateLimit-Remaining`, and `RateLimit-Reset` instead of hardcoding retry timing; a limited response can also include `Retry-After`.

Use `launchedAfter` for incremental ingestion, preserve the returned cursor for pagination, and apply exponential backoff after `429` or `5xx` responses.

For resilient ingestion, query from an overlapping time window, follow every cursor before advancing the checkpoint, and upsert by `(chainId, contractAddress)`. Periodically reconcile older history. The overlap protects against late-arriving records and same-timestamp launches; `launchedAfter` is not a finality or update cursor.

Market metrics are eventually consistent. Onchain contracts, launch configuration, and pool events are authoritative for immutable fields.

## Legacy migration

Move historical integrations to `/v1/launches`. The v1 interface uses canonical Feel.cash URLs and identifies coins by chain plus contract address while retaining supported [legacy coin](/more/legacy-coins) records.


# Launch with x402

AI agents can launch a coin on Feel.cash by paying exactly **1 USDC on Base** through x402 v2. No Feel account is required at launch time.

The v1 route supports Base and Robinhood Chain. Every market uses the standard Feel configuration and a WETH pair. Developer buys, custom curves, custom fee recipients, and stock-token pairs are not supported.

## Paste this into your agent

If your agent can make x402 payments (any wallet it can sign from with at least 1 USDC on Base), copy this prompt, describe your coin, and let it run the whole flow:

{% code title="Prompt" overflow="wrap" %}

```
Launch a coin for me on Feel.cash using x402.
Docs: https://docs.feel.cash/developers-and-integrators/x402-launches

1. POST https://api.feel.cash/v1/launches with a fresh UUID in the
   Idempotency-Key header and the JSON body {"prompt": "<my coin>"}.
2. The API replies 402 Payment Required. Decode the PAYMENT-REQUIRED header
   with an x402 v2 client and pay exactly 1 USDC on Base (eip155:8453) from
   my wallet, using the payTo address from the signed challenge.
3. Repeat the identical POST with the PAYMENT-SIGNATURE header attached.
4. Poll the returned statusUrl until status is "succeeded", then send me
   launch.url, launch.tokenAddress, and launch.explorerUrl.

My coin: <name, ticker, one-line description, and chain (base or robinhood)>.
```

{% endcode %}

The rest of this page documents the same flow in detail.

## Endpoint

```
POST https://api.feel.cash/v1/launches
```

Send a UUID in `Idempotency-Key`. Reusing the same key with the same request returns the same job; reusing it with different content returns `409`.

You can provide one natural-language prompt:

```bash
curl -i https://api.feel.cash/v1/launches \
  -X POST \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 2d5a8822-2ca8-4ad1-99fe-823bbac44b83' \
  -d '{
    "prompt": "Launch a small chrome oracle called Glint on Base"
  }'
```

Or send explicit fields:

```json
{
  "name": "Glint",
  "symbol": "GLINT",
  "description": "A small chrome oracle",
  "chain": "base",
  "imagePrompt": "A luminous chrome oracle orb on a black background",
  "socials": {
    "website": "https://glint.example"
  }
}
```

The request must contain `prompt`, or both `name` and `symbol`. Explicit fields override instructions inferred from the prompt. `chain` is `base` or `robinhood`; it defaults to Base when it cannot be inferred.

An image can be supplied as inline JPEG, PNG, or WebP base64. Trusted Feel CDN URLs are also accepted. Arbitrary external image URLs are rejected; agents can download those images themselves and send the bytes as base64. All text and images are moderated before payment settles, so rejected content is not charged.

## Payment flow

The first request returns `402 Payment Required` and a `PAYMENT-REQUIRED` header. Decode it with an x402 v2 client. The accepted requirement is always:

| Field   | Value                        |
| ------- | ---------------------------- |
| Scheme  | `exact`                      |
| Network | `eip155:8453` (Base)         |
| Asset   | Base USDC                    |
| Amount  | `1000000` raw units (1 USDC) |
| Pair    | WETH                         |

The `payTo` address and payment timeout come from the signed challenge and must not be hardcoded by clients. The buyer signs the EIP-3009 authorization; the Coinbase facilitator submits the USDC transfer and sponsors settlement gas. Feel never needs the buyer's private key.

Repeat the identical request with the encoded payment:

```http
PAYMENT-SIGNATURE: <base64 x402 PaymentPayload>
```

After settlement the API returns a durable job. The paid POST returns `202` while deployment is still processing and `201` when deployment finishes in the same request:

```json
{
  "id": "2d5a8822-2ca8-4ad1-99fe-823bbac44b83",
  "status": "processing",
  "paymentStatus": "settled",
  "statusUrl": "https://api.feel.cash/v1/launches/2d5a8822-2ca8-4ad1-99fe-823bbac44b83",
  "resolved": {
    "name": "Glint",
    "symbol": "GLINT",
    "description": "A small chrome oracle",
    "imageUrl": "https://media.charms.ai/tokens/glint.jpg",
    "socials": {
      "x": null,
      "telegram": null,
      "website": "https://glint.example"
    },
    "chain": "base",
    "pairToken": null
  },
  "launch": null,
  "error": null
}
```

`resolved` is the immutable configuration produced from the explicit fields, prompt, defaults, and moderated image. In v1, `pairToken` is always `null`, which means the standard WETH pair.

Poll the returned absolute `statusUrl` until the job is terminal:

```bash
curl https://api.feel.cash/v1/launches/2d5a8822-2ca8-4ad1-99fe-823bbac44b83
```

Possible job states are `pending`, `processing`, `succeeded`, `failed`, and `refunded`. Clients should honor `Retry-After` on `429` and reuse the original idempotency key when retrying an interrupted POST.

A successful job includes the deployed coin and all links needed to display or verify it:

```json
{
  "id": "2d5a8822-2ca8-4ad1-99fe-823bbac44b83",
  "status": "succeeded",
  "paymentStatus": "settled",
  "statusUrl": "https://api.feel.cash/v1/launches/2d5a8822-2ca8-4ad1-99fe-823bbac44b83",
  "resolved": {
    "name": "Glint",
    "symbol": "GLINT",
    "description": "A small chrome oracle",
    "imageUrl": "https://media.charms.ai/tokens/glint.jpg",
    "socials": {
      "x": null,
      "telegram": null,
      "website": "https://glint.example"
    },
    "chain": "base",
    "pairToken": null
  },
  "launch": {
    "tokenId": "70eb8307-6af4-4f80-a2ce-1f2b0da784d4",
    "tokenAddress": "0x1111111111111111111111111111111111111111",
    "slug": "glint",
    "chain": "base",
    "transactionHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "url": "https://feel.cash/glint",
    "addressUrl": "https://feel.cash/coins/base/0x1111111111111111111111111111111111111111",
    "chainId": 8453,
    "explorerUrl": "https://basescan.org/token/0x1111111111111111111111111111111111111111"
  },
  "error": null
}
```

Use `launch.url` as the canonical human-facing coin page. It is slug-based and may be used for sharing and navigation. Use `launch.addressUrl` when the caller only knows the chain and contract address; the stable address alias resolves and permanently redirects to the canonical slug page. Supported forms are:

```
https://feel.cash/coins/base/0x...
https://feel.cash/coins/robinhood/0x...
```

`launch.explorerUrl` links directly to the chain explorer. Agents should store `chain`, `chainId`, and `tokenAddress` as the durable onchain identity rather than parsing any URL.

## Creator ownership and fees

Before account linking, the verified payment wallet is recorded as the external creator. Feel does not create a synthetic account or embedded wallet.

If the wallet owner later signs a wallet-link challenge while logged into Feel, every matching settled x402 launch is associated with that account. The coins then appear in the creator's launches and the creator can claim fees.

Creator fees accrued before linking are retained in the coin's custody wallet and recorded in an exact pending ledger. Feel and referrer shares continue to settle normally; an absent account does not block them. After linking, the creator can claim only the amount recorded for that wallet.

## Failure and refund behavior

Invalid content and other failures before settlement do not charge the payer. If a terminal failure is proven to occur after payment but before any durable coin reservation or deployment attempt, Feel refunds exactly 1 USDC to the verified payer. Once a coin has been reserved or a deployment may have been broadcast, the job follows durable retry and adoption instead of issuing a conflicting refund.

Do not submit a new authorization while a job is uncertain. Poll its status or retry the original idempotent request: Feel reconciles finalized Base-USDC events and never blindly settles the same authorization twice.

## Discovery

The payment challenge declares the x402 Bazaar discovery extension, including the request and response schemas. Agents can discover the endpoint through the Coinbase Bazaar HTTP catalog, semantic search, or MCP server after it has been indexed from a successful settlement.

## Safety

A successful launch confirms deployment, not legitimacy, quality, liquidity, future value, or endorsement. Verify the returned chain, contract address, and transaction hash independently before trading or publishing them.


# Integration guide

This guide is for exchanges, wallets, indexers, screeners, explorers, and trading surfaces integrating Feel.cash coins.

## Recognize an official launch

Use the complete record, not a logo, ticker, or address suffix:

1. chain ID and full contract address;
2. a successful [Public API v1](/developers-and-integrators/api) response;
3. `officialFeelLaunch: true`;
4. the complete [onchain launch proof](/developers-and-integrators/contracts#onchain-launch-proof): chain-specific Doppler Airlock, Feel.cash integrator in `Airlock.create()`, and matching `Create.asset`; and
5. the Uniswap v4 pool identity.

The `0x…fee1` contract pattern is a useful visual signal. It is not sufficient verification by itself. The onchain proof identifies technical provenance candidates; only a matching API record with `officialFeelLaunch: true` should be presented as an official Feel.cash launch.

## Onchain launch filter

To discover new Feel.cash EVM launches without depending on names or metadata:

1. Watch `Create` events from the chain-specific Doppler Airlock.
2. Read the event's `asset` as the candidate token address.
3. Decode the parent transaction's `Airlock.create()` input.
4. Keep records whose `integrator` equals `0x3879B1Ee8389FfeFb7afd51b1bafb9fAF23d6699`.
5. Reconcile the asset's chain and complete contract address with the Feel.cash API before presenting it as official.

Do not filter every event from the Airlock as Feel.cash: the same Doppler infrastructure is shared by other launch applications. Do not treat the integrator as a cryptographic signature or proof of current official status: it is an immutable attribution field supplied at creation and can also appear in test or pre-rebrand records.

Minimal EVM identifiers:

```solidity
event Create(
    address asset,
    address indexed numeraire,
    address initializer,
    address poolOrHook
);
```

| Identifier                                      | Value                                                                |
| ----------------------------------------------- | -------------------------------------------------------------------- |
| `Airlock.create()` selector                     | `0x882db707`                                                         |
| `Create(address,address,address,address)` topic | `0x68ff1cfcdcf76864161555fc0de1878d8f83ec6949bf351df74d8a4a1a2679ab` |

Choose a confirmation threshold appropriate for the chain and listing policy. Store block and transaction provenance in your own index, handle removed or reorganized logs, and reconcile the result with the API before publishing it as official.

## Ingest launches

1. Poll `GET /v1/launches?launchedAfter=...` from an overlapping time window.
2. Follow every returned cursor before advancing the checkpoint.
3. Upsert by `(chainId, contractAddress)`.
4. Resolve the detail endpoint for immutable launch data, fees, and official launch status.
5. Index market activity from the recorded pool.
6. Refresh mutable metrics independently from immutable launch data.

Periodically reconcile historical pages. Late-arriving records and records sharing the same timestamp make a non-overlapping timestamp checkpoint unsafe.

## Canonical identity

| Field                  | Rule                                                  |
| ---------------------- | ----------------------------------------------------- |
| Primary key            | Chain ID + lowercase contract address                 |
| Public URL             | `https://feel.cash/:slug`                             |
| Brand                  | `Feel.cash`                                           |
| Ticker                 | Display with `$`; never use as identity               |
| Official launch status | Require `officialFeelLaunch: true` before attribution |
| Creator                | Optional attribution; not contract ownership          |

Names and tickers can collide. Never merge records by ticker, slug, creator, or image.

## Display Feel.cash

Use the exact name `Feel.cash` when presenting Feel.cash as a launch source. For compact source labels, use the official square icon. Use the full wordmark only where there is enough horizontal space.

![Feel.cash square icon](https://cdn.feel.cash/brand/feel-cash/feel-icon-128.png)

[Download the square icon (512×512 PNG)](https://cdn.feel.cash/brand/feel-cash/feel-icon-512.png)

Download production-ready files and copy stable CDN URLs from [Brand assets](/developers-and-integrators/brand-assets).

Branding is presentation, not verification. A Feel.cash logo, name, ticker, or `0x…fee1` address pattern does not prove that a coin is an official launch. Always verify the API record and complete onchain provenance described above.

## Display fees

Read the fee fields returned for the specific coin.

For current Feel.cash launches, the normal market fee is **1.5%**. At market opening, a temporary protection fee starts at 50% and decays linearly to 1.5% over 15 seconds. The Uniswap v4 LP fee is 0%; this is one market fee, not two fees stacked together.

Historical coins can have different fee and allocation rules. Do not overwrite their stored configuration with the current defaults.

## Handle chain and settlement data

Market chain, market pair, and payout settlement are separate fields.

A market can live on Robinhood Chain while Creator Fees and Referral Fees settle as Base USDC. Index the pair using the `numeraireAddress` returned for that launch rather than assuming every market uses WETH.

## Availability and moderation

An onchain contract or pool cannot be deleted by Feel.cash. A coin can stop being presented in Feel.cash products when its offchain content violates product rules.

The presence of an API record is not a listing recommendation. Exchanges and integrators remain responsible for their own listing, compliance, and risk decisions.

## Integration support

Contact `support@feel.cash` for integration questions and `security@feel.cash` for security disclosures.

Include the endpoint, request time, chain ID, full contract address, and response ID when reporting an ingestion problem.


# Brand assets

Use these official assets when displaying Feel.cash as a launch source in an exchange, wallet, terminal, explorer, screener, or data product.

[**Download the complete brand kit**](https://cdn.feel.cash/brand/feel-cash/feel-cash-brand-kit.zip)

## Product name

Write the name as **Feel.cash**. Keep the capitalization and punctuation unchanged.

## Icon

Use the square icon for compact source labels, launchpad badges, lists, and integrations where a full wordmark would not fit.

![Feel.cash icon](https://cdn.feel.cash/brand/feel-cash/feel-icon-512.png)

| Size             | PNG                                                                 | WebP                                                                 |
| ---------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------- |
| 64×64            | [Download](https://cdn.feel.cash/brand/feel-cash/feel-icon-64.png)  | —                                                                    |
| 128×128          | [Download](https://cdn.feel.cash/brand/feel-cash/feel-icon-128.png) | —                                                                    |
| 256×256          | [Download](https://cdn.feel.cash/brand/feel-cash/feel-icon-256.png) | —                                                                    |
| 512×512          | [Download](https://cdn.feel.cash/brand/feel-cash/feel-icon-512.png) | [Download](https://cdn.feel.cash/brand/feel-cash/feel-icon-512.webp) |
| 600×600 original | [Download](https://cdn.feel.cash/brand/feel-cash/feel-icon.png)     | —                                                                    |

## Wordmark

The current wordmark is white with a transparent background. Use it on dark backgrounds only.

![Feel.cash white wordmark](https://cdn.feel.cash/brand/feel-cash/feel-wordmark-white-640.png)

| Width            | PNG                                                                           | WebP                                                                           |
| ---------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| 320 px           | [Download](https://cdn.feel.cash/brand/feel-cash/feel-wordmark-white-320.png) | —                                                                              |
| 640 px           | [Download](https://cdn.feel.cash/brand/feel-cash/feel-wordmark-white-640.png) | [Download](https://cdn.feel.cash/brand/feel-cash/feel-wordmark-white-640.webp) |
| 1261 px original | [Download](https://cdn.feel.cash/brand/feel-cash/feel-wordmark-white.png)     | —                                                                              |

## Usage

* Keep the original proportions and colors.
* Do not stretch, crop, rotate, recolor, or recreate the marks.
* Use the icon when the background or available space makes the white wordmark unclear.
* Leave enough clear space for the mark to remain recognizable.

These assets identify Feel.cash visually. They are not proof that a coin is an official Feel.cash launch. Verify every launch through the [Integration guide](/developers-and-integrators/integration-guide), the [Public API v1](/developers-and-integrators/api), and its complete onchain provenance.

## Stable CDN paths

The files above are served from `https://cdn.feel.cash/brand/feel-cash/`. These URLs are intended for production integrations and can be used directly without copying the files into your own asset pipeline.


# Partner Launch API

> **Access by approval.** The API contract is public, but API keys and sponsored allowances are available only to approved Feel partners.

The Feel Partner Launch API lets an approved team launch official Feel coins on Base or Robinhood Chain from its own server. Base remains the default when the request omits `chain`. The API supports both a one-call launch and an optional two-step `prepare -> execute` flow that reveals the future CREATE2 contract address before deployment.

The API is ready for approved pilot integrations. The production base URL is:

```
https://api.feel.cash
```

## What makes a launch official

An official Feel launch must pass through the Feel app or this API. Feel then:

* validates the launch configuration;
* records durable creator and launch provenance;
* applies the official Creator Fees settlement;
* indexes the coin and makes it available on Feel;
* enforces idempotency, quotas, and recovery;
* uses the same versioned Doppler recipes as the Feel launch UI.

Doppler Airlock remains permissionless. Calling it directly is possible, but that deployment is not automatically treated as an official Feel launch and does not automatically receive Feel attribution, Creator Fees settlement, or listing.

Partner attribution is private backend provenance. The partner name, API key, client ID, and API launch source are not added to the token contract or public token metadata, and Feel does not display a public “partner launch” label. The normal creator account remains visible in the same places as a launch made through the Feel UI.

## Partner API or x402?

Feel offers two separate server-to-server launch lanes:

|           | Partner Launch API                       | [x402 launch API](/developers-and-integrators/x402-launches) |
| --------- | ---------------------------------------- | ------------------------------------------------------------ |
| Access    | Approved Feel account and API key        | Public; no API key                                           |
| Identity  | Creator is derived from the approved key | Accountless launch with later ownership claim                |
| Payment   | Sponsored pilot allowance                | 1 USDC per launch through x402                               |
| Future CA | Optional `prepare -> execute`            | One-call payment flow                                        |
| Chains    | Base or Robinhood Chain                  | Base or Robinhood Chain                                      |
| Limits    | Client quota and minimum interval        | Payment and public API limits                                |

Use the Partner API when the launch must belong to an approved Feel creator, use Feel Creator Fees settlement immediately, or expose the future CA before deployment. Use x402 for an accountless agent or service that can pay per launch and does not need an invite-only credential.

## Request access

Access is tied to one Feel account and is granted manually.

1. Sign in to [Feel.cash](https://feel.cash).
2. Open **Account -> Developer**.
3. Enter your work email and briefly describe what you are building.
4. Select **Request API access**.
5. Wait for the Feel team to review the request.
6. After approval, refresh **Account -> Developer**.
7. Select **Create API key**.
8. Copy the full key immediately into your server-side secret manager.

The full key is revealed only once. Feel stores a hash, not the plaintext key, so it cannot be shown again later. The pilot does not offer self-service key rotation or revocation. If a key may have been exposed, contact the Feel team through your partner channel without including the key itself.

An approved account can create only one pilot key. A second key-creation attempt is rejected with `409 api_key_already_created`. This is an Account -> Developer key-management error, not a launch endpoint error.

The approved team decides which of its backend services may use the key. Do not share it with end users or put it in client-side software.

## Protect the API key

Keys have this form:

```
feel_live.<key-id>.<secret>
```

Treat the key like a production signing credential:

* use it only from a trusted backend;
* store it in a secret manager or encrypted environment variable;
* never put it in browser, mobile, desktop, or bot client code;
* never commit it to source control;
* never include it in a URL or query parameter;
* never paste it into Telegram, Slack, email, support tickets, logs, analytics, or error trackers;
* never expose it through a frontend proxy endpoint.

Send it only in the Bearer authorization header:

```http
Authorization: Bearer feel_live.<key-id>.<secret>
```

## Choose a launch workflow

Both workflows create the same type of official Feel launch.

### Direct launch

Use `POST /v1/partner/launches` for a one-call experience. Feel validates, prepares, sponsors, and deploys the launch. Internally, the backend still builds and simulates the CREATE2 deployment before broadcasting.

```
POST /v1/partner/launches
```

This is the simplest choice when you do not need the contract address in advance.

### Prepare, then execute

Use `POST /v1/partner/launches/prepare` when you need the future contract address before deployment—for example, to prepare separately signed buys, bundles, monitoring, or indexing infrastructure.

```
POST /v1/partner/launches/prepare
POST /v1/partner/launches/<job-id>/execute
```

`prepare` validates and resolves the inputs, reserves the Feel identity and slug, freezes the Doppler configuration, mines the vanity salt, simulates the deployment, and returns the predicted CREATE2 address.

It is **not a premint**:

* no contract exists onchain;
* no supply exists;
* no transaction is signed or broadcast;
* no sponsored launch allowance is consumed.

The prepared reservation is valid for at most 24 hours and occupies the client's single active-job slot. `execute` reloads and deploys exactly that persisted configuration. The request cannot replace its address, curve, fee wallets, salt, token URI, or other deployment parameters.

## Request schema

Direct and prepared launches accept the same JSON body.

Provide either `prompt`, or both `name` and `symbol`. Explicit fields take precedence over values inferred from `prompt`.

```json
{
  "name": "Glint",
  "symbol": "GLINT",
  "chain": "robinhood",
  "listed": true,
  "description": "A small chrome oracle",
  "imagePrompt": "A luminous chrome oracle orb on black",
  "socials": {
    "x": "https://x.com/example",
    "telegram": "https://t.me/example",
    "website": "https://example.com"
  },
  "launchMode": "standard",
  "tradeFeelingPreset": "balanced"
}
```

| Field                | Type              | Rules                                                                                                                        |
| -------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `prompt`             | string            | 1–2,000 characters                                                                                                           |
| `name`               | string            | 1–50 characters                                                                                                              |
| `symbol`             | string            | 1–12 characters; starts with A–Z; remaining characters A–Z or 0–9                                                            |
| `chain`              | string            | `base` (default) or `robinhood`                                                                                              |
| `listed`             | boolean           | `false` (default) keeps the coin unlisted; `true` opts into Feel.cash UI discovery                                           |
| `description`        | string or null    | Up to 500 characters                                                                                                         |
| `imagePrompt`        | string or null    | 1–2,000 characters; used only when `image` is omitted                                                                        |
| `image`              | object or null    | Final image source as inline base64 or a trusted Feel CDN URL; takes precedence over `imagePrompt`                           |
| `socials.x`          | HTTPS URL or null | Up to 2,048 characters                                                                                                       |
| `socials.telegram`   | HTTPS URL or null | Up to 2,048 characters                                                                                                       |
| `socials.website`    | HTTPS URL or null | Up to 2,048 characters                                                                                                       |
| `launchMode`         | string            | `standard` (default) or `degen`                                                                                              |
| `tradeFeelingPreset` | string            | `balanced` (default), `fast-start`, or `late-rush`; standard mode only                                                       |
| `disableSniperFees`  | boolean           | Degen mode only; omitted/false keeps sniper fees enabled                                                                     |
| `disableReferralFee` | boolean           | Set to `true` to remove the 0.15% referral fee and use a 1.35% terminal swap fee; omitted/false keeps the standard 1.50% fee |

Unknown fields are rejected.

### Choose a chain

Set `chain` explicitly when launching on Robinhood Chain:

```json
{
  "name": "Glint",
  "symbol": "GLINT",
  "chain": "robinhood"
}
```

Omitting `chain` launches on Base. Partner launches use Feel's server-owned Doppler configuration and WETH pairing on both networks. The selected chain is part of the idempotent launch identity and cannot be changed between retries, preparation, and execution.

### Choose visibility

Partner launches are unlisted by default. Omit `listed` or send `"listed": false` to keep the coin out of Feel.cash UI discovery surfaces: feeds, featured placements, search, and public profiles. It is also omitted from the sitemap.

An unlisted coin is still live: its direct coin page, trading, and holdings remain available. Send `"listed": true` when the coin should appear in Feel.cash UI discovery.

```json
{
  "name": "Glint",
  "symbol": "GLINT",
  "listed": true
}
```

Feel fixes the visibility choice during preparation. Retrying or resuming the same idempotent job preserves the original value, and `execute` cannot change it.

### Images

Send an inline JPEG, PNG, or WebP image as base64:

```json
{
  "image": {
    "type": "base64",
    "mimeType": "image/png",
    "data": "iVBORw0KGgo..."
  }
}
```

The encoded `data` value may contain up to 7,000,000 characters.

A URL reference is accepted only when it is an HTTPS asset already hosted on Feel's trusted CDN. Arbitrary remote image URLs are not fetched.

```json
{
  "image": {
    "type": "url",
    "url": "https://cdn.charms.ai/path/to/image.png"
  }
}
```

An explicit `image` is authoritative and is not regenerated or visually modified by AI. If both `image` and `imagePrompt` are present, Feel uses `image` and ignores `imagePrompt`.

Feel still validates and normalizes the supplied file before storing it on its trusted CDN. The server auto-rotates it, crops it to a 1,024 × 1,024 square, flattens transparency onto a white background, and encodes it as JPEG at 90% quality. This preserves the supplied visual rather than creating a new one, but it is not a byte-for-byte copy of the upload. The approved partner remains responsible for the image content it submits.

If no explicit image is supplied, Feel can generate one from `imagePrompt`, the launch prompt, or the resolved coin identity.

## Launch modes

### Standard

Standard mode supports the named Trade Feeling presets:

```json
{
  "launchMode": "standard",
  "tradeFeelingPreset": "fast-start"
}
```

Available presets are `balanced` (the default), `fast-start`, and `late-rush`.

### Degen with sniper fees

Degen uses its own fixed Trade Feeling recipe. Do not send `tradeFeelingPreset` with Degen.

```json
{
  "launchMode": "degen"
}
```

Sniper fees are enabled by default and decay according to the versioned Degen recipe.

### Degen without sniper fees

Set `disableSniperFees` to `true` to select the immutable Degen recipe without sniper fees:

```json
{
  "launchMode": "degen",
  "disableSniperFees": true
}
```

`disableSniperFees` is rejected in standard mode. A standard Trade Feeling preset is rejected in Degen mode.

## Unsupported overrides

The pilot is intentionally narrow and uses WETH pairing and Feel-owned configuration on both supported chains. Do not send:

* unsupported chain values or pair-token overrides;
* `userId`, creator ID, partner ID, or client ID;
* creator-wallet or fee-recipient overrides;
* raw salt, pool, tick, curve, hook, gas, or transaction parameters;
* developer-buy fields such as `devBuyUsd`.

The creator identity and fee ownership are derived exclusively from the Feel account approved for the API key. The key authorizes launching; it does not authorize spending funds from the creator's wallet. A partner may use the prepared contract address for its own separately authorized transactions.

## Idempotency

Every logical launch must use a stable UUID in the `Idempotency-Key` header:

```http
Idempotency-Key: 00000000-0000-4000-8000-000000000001
```

Generate the UUID once and persist it with your launch record. Repeating the same endpoint with the same key and identical body returns or resumes the same job. It does not create a second launch or consume quota twice.

Token names, symbols, and descriptions do not need to be unique. To create a new token and contract address with identical metadata, use a new `Idempotency-Key`. Reusing the same key with an identical request returns the existing job and contract address; reusing it with different content returns `409 idempotency_conflict`.

Reusing the key with different content—or switching between direct and prepared execution—returns `409 idempotency_conflict`.

After a timeout, connection reset, ambiguous `5xx`, or process crash, do not invent a new key. Retry the original request first.

## Direct launch quickstart

```bash
export FEEL_API_KEY='feel_live.<key-id>.<secret>'
export FEEL_IDEMPOTENCY_KEY='00000000-0000-4000-8000-000000000001'

curl --request POST 'https://api.feel.cash/v1/partner/launches' \
  --header "Authorization: Bearer ${FEEL_API_KEY}" \
  --header "Idempotency-Key: ${FEEL_IDEMPOTENCY_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Glint",
    "symbol": "GLINT",
    "chain": "robinhood",
    "description": "A small chrome oracle",
    "launchMode": "standard",
    "tradeFeelingPreset": "balanced"
  }'
```

The endpoint returns `201` when the launch finishes during the request, `202` while durable work continues, or `422` for a terminal launch failure.

## Prepare and execute quickstart

### 1. Prepare

```bash
export FEEL_API_KEY='feel_live.<key-id>.<secret>'
export FEEL_IDEMPOTENCY_KEY='00000000-0000-4000-8000-000000000002'

curl --request POST 'https://api.feel.cash/v1/partner/launches/prepare' \
  --header "Authorization: Bearer ${FEEL_API_KEY}" \
  --header "Idempotency-Key: ${FEEL_IDEMPOTENCY_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Glint",
    "symbol": "GLINT",
    "chain": "robinhood",
    "description": "A small chrome oracle",
    "launchMode": "degen",
    "disableSniperFees": false
  }'
```

A completed preparation returns `201`:

```json
{
  "id": "2d5a8822-2ca8-4ad1-99fe-823bbac44b83",
  "executionMode": "prepare_execute",
  "status": "pending",
  "statusUrl": "https://api.feel.cash/v1/partner/launches/2d5a8822-2ca8-4ad1-99fe-823bbac44b83",
  "executeUrl": "https://api.feel.cash/v1/partner/launches/2d5a8822-2ca8-4ad1-99fe-823bbac44b83/execute",
  "prepared": {
    "tokenId": "8e6eced4-86b3-4e67-bdc7-a5217763b70f",
    "tokenAddress": "0x1234567890abcdef1234567890abcdef12345678",
    "slug": "glint",
    "url": "https://feel.cash/glint",
    "explorerUrl": "https://robinhoodchain.blockscout.com/token/0x1234567890abcdef1234567890abcdef12345678",
    "chain": "robinhood",
    "chainId": 4663,
    "preparedAt": "2026-08-20T08:00:00.000Z",
    "expiresAt": "2026-08-21T08:00:00.000Z",
    "deploymentState": "not_deployed"
  },
  "launch": null,
  "error": null
}
```

A response may initially be `202`. Poll `statusUrl` or retry the same prepare request until `prepared` is non-null.

### 2. Confirm no deployment yet

Before execution, the returned address has no contract bytecode. This is an optional integration check:

```bash
curl --request POST 'https://rpc.mainnet.chain.robinhood.com' \
  --header 'Content-Type: application/json' \
  --data '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "eth_getCode",
    "params": ["0x1234567890abcdef1234567890abcdef12345678", "latest"]
  }'
```

The result should be `0x` before `execute`.

### 3. Execute

The execute body is empty:

```bash
export FEEL_JOB_ID='2d5a8822-2ca8-4ad1-99fe-823bbac44b83'

curl --request POST \
  "https://api.feel.cash/v1/partner/launches/${FEEL_JOB_ID}/execute" \
  --header "Authorization: Bearer ${FEEL_API_KEY}"
```

Do not send a new launch body or a new idempotency key to `execute`. Repeating the endpoint is safe and returns the same durable job and deployment result.

## Check job status

```bash
curl \
  "https://api.feel.cash/v1/partner/launches/${FEEL_JOB_ID}" \
  --header "Authorization: Bearer ${FEEL_API_KEY}"
```

Only a key belonging to the same approved client can access the job.

Public job statuses are `pending`, `processing`, `succeeded`, and `failed`.

A successful response contains the final address and transaction:

```json
{
  "id": "2d5a8822-2ca8-4ad1-99fe-823bbac44b83",
  "executionMode": "prepare_execute",
  "status": "succeeded",
  "statusUrl": "https://api.feel.cash/v1/partner/launches/2d5a8822-2ca8-4ad1-99fe-823bbac44b83",
  "executeUrl": null,
  "prepared": null,
  "launch": {
    "tokenId": "8e6eced4-86b3-4e67-bdc7-a5217763b70f",
    "tokenAddress": "0x1234567890abcdef1234567890abcdef12345678",
    "slug": "glint",
    "transactionHash": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd",
    "url": "https://feel.cash/glint",
    "explorerUrl": "https://robinhoodchain.blockscout.com/token/0x1234567890abcdef1234567890abcdef12345678",
    "chain": "robinhood",
    "chainId": 4663
  },
  "error": null
}
```

Poll with exponential backoff and jitter. A reasonable starting interval is 2 seconds, capped around 15 seconds. Stop on `succeeded` or `failed`.

If preflight stopped before its resolved snapshot was persisted, `GET` cannot reconstruct removed inline image bytes. Retry the originating `POST` with the same body and `Idempotency-Key`. A status read may resume a direct job or an already accepted execution, but it never executes an unaccepted prepared job.

## TypeScript example

```ts
type LaunchJob = {
  id: string;
  executionMode: "direct" | "prepare_execute";
  status: "pending" | "processing" | "succeeded" | "failed";
  statusUrl: string;
  executeUrl: string | null;
  prepared: {
    tokenAddress: string;
    chain: "base" | "robinhood";
    chainId: 8453 | 4663;
    expiresAt: string;
  } | null;
  launch: {
    tokenAddress: string;
    transactionHash: string | null;
    chain: "base" | "robinhood";
    chainId: 8453 | 4663;
  } | null;
  error: string | null;
};

type PreparedLaunchJob = LaunchJob & {
  executeUrl: string;
  prepared: NonNullable<LaunchJob["prepared"]>;
};

const apiKey = process.env.FEEL_API_KEY;
if (!apiKey) throw new Error("FEEL_API_KEY is required");

const headers = {
  Authorization: `Bearer ${apiKey}`,
  "Content-Type": "application/json",
};

const idempotencyKey = crypto.randomUUID();
const requestBody = JSON.stringify({
  name: "Glint",
  symbol: "GLINT",
  chain: "robinhood",
  launchMode: "standard",
  tradeFeelingPreset: "balanced",
});
const sleep = (milliseconds: number) =>
  new Promise((resolve) => setTimeout(resolve, milliseconds));

async function prepareLaunch(): Promise<PreparedLaunchJob> {
  let delayMs = 2_000;
  for (;;) {
    // Repeating the original POST safely resumes the same preparation. A GET
    // alone cannot reconstruct inline image bytes removed after persistence.
    const response = await fetch(
      "https://api.feel.cash/v1/partner/launches/prepare",
      {
        method: "POST",
        headers: { ...headers, "Idempotency-Key": idempotencyKey },
        body: requestBody,
      },
    );
    const payload: unknown = await response.json();
    if (!response.ok) {
      throw new Error(`Prepare failed: ${JSON.stringify(payload)}`);
    }

    const job = payload as LaunchJob;
    if (job.prepared && job.executeUrl) {
      return { ...job, prepared: job.prepared, executeUrl: job.executeUrl };
    }
    if (response.status !== 202) {
      throw new Error(`Unexpected prepare response: ${JSON.stringify(job)}`);
    }

    await sleep(delayMs + Math.floor(Math.random() * 500));
    delayMs = Math.min(15_000, Math.round(delayMs * 1.5));
  }
}

const prepared = await prepareLaunch();

// Prepare any separately authorized partner transactions here.

const executeResponse = await fetch(prepared.executeUrl, {
  method: "POST",
  headers,
});
const executePayload: unknown = await executeResponse.json();
if (!executeResponse.ok) {
  throw new Error(`Execute failed: ${JSON.stringify(executePayload)}`);
}

let executed = executePayload as LaunchJob;
let statusDelayMs = 2_000;
while (executed.status === "pending" || executed.status === "processing") {
  await sleep(statusDelayMs + Math.floor(Math.random() * 500));
  const statusResponse = await fetch(executed.statusUrl, {
    headers: { Authorization: `Bearer ${apiKey}` },
  });
  const statusPayload: unknown = await statusResponse.json();
  if (!statusResponse.ok) {
    throw new Error(`Status failed: ${JSON.stringify(statusPayload)}`);
  }
  executed = statusPayload as LaunchJob;
  statusDelayMs = Math.min(15_000, Math.round(statusDelayMs * 1.5));
}

if (executed.status === "failed") {
  throw new Error(`Launch failed: ${executed.error ?? "unknown error"}`);
}
```

In production, validate response JSON at runtime and handle `202`, `409`, `422`, `429`, and retryable `503` responses explicitly.

## Sponsored pilot limits

Default limits are shown in **Account -> Developer** and enforced per approved client:

* 20 accepted launches per rolling 24 hours;
* at least 60 seconds between accepted launches;
* one active launch job at a time;
* one non-expiring product key.

`prepare` alone does not consume launch allowance. Allowance is consumed when `execute` crosses the atomic sponsorship boundary. Direct launch crosses that boundary within its one-call flow. Retrying an already accepted job does not consume another allowance.

An abandoned unaccepted job stops blocking a different idempotency key after 25 hours when it has no live worker lease. A prepared reservation normally expires after 24 hours.

## Errors

Except for validation failures, immediate request errors return an HTTP status and stable `code`:

| HTTP | Code                             | Meaning                                                                                             |
| ---: | -------------------------------- | --------------------------------------------------------------------------------------------------- |
|  400 | no `code`                        | Header or body validation failed; the body contains `error`, `details`, and optionally `formErrors` |
|  401 | `invalid_api_key`                | Key is missing, malformed, expired, revoked, or incorrect                                           |
|  403 | `api_access_disabled`            | Feel disabled the approved client                                                                   |
|  404 | `launch_not_found`               | The job does not exist for this client                                                              |
|  409 | `idempotency_conflict`           | The UUID was reused with different content or execution mode                                        |
|  409 | `launch_in_progress`             | Another launch for the client is active                                                             |
|  409 | `launch_not_prepared`            | Execute was requested before preparation completed                                                  |
|  409 | `invalid_execution_mode`         | Execute was requested for a direct-launch job                                                       |
|  409 | `prepared_launch_expired`        | The prepared reservation expired                                                                    |
|  409 | `prepared_configuration_changed` | Executable parameters no longer match the prepared hash                                             |
|  429 | `launch_rate_limited`            | The minimum launch interval has not elapsed                                                         |
|  429 | `launch_quota_exceeded`          | The rolling sponsored allowance is exhausted                                                        |
|  503 | `persistence_unavailable`        | Durable storage or authentication is temporarily unavailable                                        |

Execution-stage failures are persisted on the durable job in its `error` field. Terminal failures return the job with HTTP `422`; retryable failures normally return the job with HTTP `202` so the same operation can be resumed:

| HTTP | Job `error`               | Meaning                                                                |
| ---: | ------------------------- | ---------------------------------------------------------------------- |
|  422 | `content_rejected`        | Content policy rejected the request                                    |
|  422 | `image_rejected`          | The image could not be accepted                                        |
|  422 | terminal launch code      | The launch cannot succeed without changed input                        |
|  202 | `preflight_unavailable`   | Text, image, moderation, or simulation work is temporarily unavailable |
|  202 | `prepare_unavailable`     | The reserved launch could not be prepared yet                          |
|  202 | `sponsorship_unavailable` | The sponsorship boundary could not be completed yet                    |
|  202 | `launch_unavailable`      | Deployment or recovery is temporarily unavailable                      |

The `202` and `422` rows above describe responses from the operation `POST` endpoints. `GET /v1/partner/launches/<job-id>` normally returns HTTP `200` for a job that exists, including one with a persisted failure. Always inspect its `status` and `error` fields.

Invalid public option combinations fail request validation with HTTP `400`. For example, `disableSniperFees` outside Degen mode or a `tradeFeelingPreset` in Degen mode is a validation error. The internal `unsupported_configuration` guard is a defensive `422` for a resolved launch that violates a server invariant; schema-valid partner requests should not normally encounter it.

`429` responses include `Retry-After` when available. Respect it before retrying. For retryable failures, reuse the original request and idempotency key.

## Ownership and Creator Fees

The API key maps to one approved Feel account. Feel derives the canonical creator and fee ownership server-side; requests cannot redirect either one.

The resulting coin follows the same ownership, Creator Fees, recovery, and public Feel indexing path as a launch made in the app. The public contract and metadata do not reveal the partner client or API key.

## Front-running considerations

Revealing a CREATE2 address before deployment necessarily creates a window in which other parties know the future CA. Feel fails closed if bytecode appears at that address before Feel broadcasts, unless Feel's durable send ledger proves the deployment was broadcast by Feel. The API never adopts an unproven third-party deployment as an official launch.

Partners remain responsible for the privacy and ordering of any transactions they prepare around the predicted address.

## Support and security

Use your Feel partner channel for onboarding, quota, and operational questions. Never paste an API key into that channel.

If a credential may have been exposed:

1. stop sending new requests with it;
2. contact the Feel team immediately through the partner channel;
3. provide the visible key prefix or last four characters, never the secret;
4. wait for the team to disable or replace the key through internal tooling.

For public market data that does not require launch authorization, use the [Public API v1](/developers-and-integrators/api).


# Verify a coin

A coin's name, ticker, image, or social account can be copied. Identify it by its chain and complete contract address, then inspect the launch record before trading or integrating.

## Verify the contract and launch

Before trading or integrating:

1. Open the canonical `feel.cash/:slug` page.
2. Confirm the chain and complete contract address.
3. Resolve that chain and address through the API.
4. Require `officialFeelLaunch: true`, then check the integrator, pool, and fee configuration.
5. Inspect the contract and creation transaction on the chain explorer.

Do not rely on a ticker, name, image, the `fee1` suffix, Airlock, or integrator alone. The onchain signals identify provenance candidates; the API officiality flag completes the current Feel.cash check.

This process proves product attribution, not safety. It is not a smart-contract audit, creator endorsement, or guarantee of price, volume, liquidity, sellability, or returns.


# Safety and risks

Coins and onchain markets are speculative and irreversible. Use only funds you can afford to lose.

## Market risk

* A coin can lose all of its value.
* Liquidity can be thin or disappear.
* Price impact and volatility can be extreme.
* Cross-chain routing can be delayed or fail.
* Market data can lag the chain.
* Creator Fees and Referral Fees depend on actual trading and successful settlement.

Feel.cash does not promise price, liquidity, volume, exchange listing, returns, or future eligibility.

A launch pool that cannot be withdrawn or migrated can still become thin, one-sided, or uneconomic to trade. A liquidity lock is not a guarantee of available depth, sellability, or USD value.

## Wallet responsibility

Check the network, asset, amount, quote, destination, and signature before confirming. A completed onchain transaction cannot be reversed by Feel.cash.

Never share a seed phrase, private key, recovery code, or raw authentication token. Feel.cash support will never ask for one.

## Verify before you trade

Names, tickers, images, and social accounts can be copied. Use the canonical Feel.cash URL, chain, and complete contract address. For official launches, also confirm the API record, production integrator, pool, and creation transaction.

The `fee1` ending is a useful visual signal, not standalone proof of provenance or safety.

## Impersonation and trademarks

Ticker availability does not establish ownership of a name or brand. Creators are responsible for having the rights to the names, images, media, and claims used in a launch.

Feel.cash can restrict how content is presented in its own products. It cannot delete an onchain contract, erase transfers, or remove a pool from the blockchain.

## Reports and disclosures

Use the in-product report action where available. For impersonation, trademark, phishing, malicious-link, or content reports, contact `abuse@feel.cash` and include:

* chain ID and full contract address;
* canonical Feel.cash URL;
* the content or behavior being reported;
* supporting evidence;
* a safe contact address for follow-up.

For security vulnerabilities, contact `security@feel.cash`. Avoid publishing an exploitable issue before the team has had a reasonable opportunity to respond.

## Product action versus onchain state

Feel.cash can remove a coin from product discovery or stop presenting its offchain content. It cannot recover funds, change ownership, or make an immutable contract disappear.


# Launch from X

The official Feel.cash account can turn an explicit X request into a coin launch.

## Start a launch

Mention `@feeldotcash` with a clear launch request and at least one starting point:

* a name;
* a ticker;
* an image;
* a short concept;
* a tagged X account;
* “me” as the subject;
* or a request to surprise you.

A normal mention, photo, joke, compliment, question, or coin discussion does not authorize a launch. The request must clearly say to launch.

## What Feel can complete

One starting point is enough. Feel can propose the remaining name, ticker, description, image, and concept while preserving valid details you supplied explicitly.

Launch memes, ideas, communities, products, public references, or technical concepts. The result is a coin with its own canonical Feel.cash page.

## Ticker rules on X

* One- and two-character tickers are reserved.
* Three-character tickers require at least 1,000 X followers.
* Four- through twelve-character tickers follow the standard reservation rules.
* Availability is final only when the launch reservation succeeds.

If a ticker is unavailable, the launcher can offer alternatives and let the same requester continue in the thread.

## Chains and limits

Base and Robinhood Chain are available when their operational gates are enabled. An eligible explicit chain request takes priority; otherwise Feel applies its launch routing.

X launch pricing, account requirements, and rate limits can differ from web and native. The confirmation shown before launch is authoritative for that request.

## Confirmation

A coin is live only after the onchain deployment succeeds. The final response includes the canonical coin link, chain, contract address, and transaction facts.

Never trust a contract address copied into an altered reply. Confirm it on the canonical Feel.cash coin page and through the API.

If a launch is pending, wait for the recorded continuation. A retry continues the same launch intent; it must not pretend a coin is live before deployment succeeds.


# Legacy coins

Feel.cash continues to support coins historically launched through Charms. These legacy launches used the Clanker stack. They are existing onchain assets, not new Feel.cash launches and not older versions of the current Feel.cash market configuration.

## What stays the same

* contract address and chain;
* token balances and holders;
* pool and liquidity positions;
* fee recipients and allocation rules;
* transaction history;
* immutable launch parameters.

There is no automatic token conversion, migration contract, swap, redenomination, or replacement coin. The same contract remains the coin.

## What changes

The canonical product experience can move to a Feel.cash coin page, and supported legacy coins can be returned through the coin-first API. The product name, interface, or URL can change without changing the onchain asset.

Legacy records can retain provenance needed for historical compatibility. Integrators should identify them by chain and contract, then use the fee, pool, and allocation data recorded for that specific coin.

## Do not apply current launch defaults

Current Feel.cash defaults — including the `fee1` address ending, starting market configuration, 1.5% market fee, and fee split — do not apply retroactively to legacy coins.

Do not infer compatibility from a ticker or from a current launch template. Read the coin's own contract, pool, and API record.

## Historical URLs

Historical Charms market URLs can redirect to the corresponding Feel.cash coin page through an explicit stored mapping.

Redirects must never guess by ticker. Tickers can be reused; the stable identity is the chain plus complete contract address.

## For exchanges and indexers

Treat a supported legacy coin as a distinct compatibility class:

| Field                         | Rule                                              |
| ----------------------------- | ------------------------------------------------- |
| Identity                      | Chain ID + full contract address                  |
| Deployment stack              | Clanker                                           |
| Official new Feel.cash launch | No                                                |
| Contract migration            | None                                              |
| Fees and allocations          | Read from the coin's own historical configuration |


# Leaderboard and token status

Leaderboards are discovery views for activity already visible in Feel.cash and onchain.

## Leaderboards

Rankings can include:

* **Coins:** market activity during the selected period;
* **Traders:** recorded trading activity;
* **Holders:** qualifying onchain holdings.

Leaderboard data can be delayed, normalized, filtered, or eventually consistent. Placement is not evidence of organic demand and does not guarantee a reward, allocation, airdrop, whitelist, or future eligibility.

## Cody

Cody remains part of Feel.cash. Feel.cash plans to recognize original Cody holders in a future initiative. Exact timing, eligibility, and mechanics have not been announced yet.

## Native token

Feel.cash has not announced an official native `$FEEL` contract, airdrop, claim, staking program, snapshot, allocation, or launch date.

The `$` in the Feel.cash identity is part of the brand. It does not mean a native token already exists.

If that status changes, the official contract and exact rules will be published through Feel.cash channels and these docs. Do not trust unofficial contracts, claim links, or eligibility promises.


# Export your wallet

Feel.cash uses a Privy embedded EVM wallet for your Cash, coins, and onchain activity. Advanced users can export that wallet's private key through [Privy Home](https://home.privy.io) and load it into a compatible EVM wallet client.

Exporting does not move your assets or create a new wallet. It gives you direct access to the same EVM address.

{% hint style="danger" %}
Your private key gives complete and permanent control of the wallet and everything it holds. Anyone who obtains it can move your funds without your permission, and blockchain transactions generally cannot be reversed.

Never paste the key into a website, send it to support, save it in email or cloud notes, store it in a screenshot, or share it with anyone. Feel.cash and Privy will never ask you to disclose it. Once you export the key, you are solely responsible for keeping it secure and for every external wallet or device where you enter it. Feel.cash and Privy cannot recover or reimburse assets lost through exposure of the key, malware, an unsafe wallet client, or an incorrectly signed transaction.
{% endhint %}

## Export Through Privy Home

Privy Home currently starts with email verification. Before opening Privy Home, make sure your Feel.cash account has a direct email sign-in method:

1. In Feel.cash, open **Settings → Sign-in methods**.
2. Check **Email**. If it says **Not linked**, choose **Link**, enter an email address you control, and verify the one-time code. Do this even if Google, Apple, or X is already linked: those remain separate sign-in methods.
3. Open [Privy Home](https://home.privy.io) and choose **Get started**.
4. Enter the same email address shown under **Settings → Sign-in methods → Email**, then complete the code verification.
5. Find the EVM wallet whose complete address matches the wallet address shown in your Feel.cash account. If more than one wallet appears, verify the address before continuing.
6. Open that wallet's account details and choose the private-key export option presented by Privy.
7. Complete Privy's verification flow, reveal the key in a private environment, and import it only into an EVM wallet client you trust.

If you cannot link or verify the email, or the expected wallet is not shown, stop and contact <hey@feel.cash>. Do not continue with a different wallet or create a new account.

Privy explains that an embedded wallet key is assembled on a separate origin and is available only to the user. See [Privy's wallet export documentation](https://docs.privy.io/wallets/wallets/export) for its current security model and supported key format.

## What Stays the Same

Exporting the key does not unlink the wallet, change its address, remove its balances, or erase its onchain history. Transactions signed from an external wallet client are transactions from that same address.

## Leaderboard and External Transactions

Exporting the wallet does not remove it from the Feel.cash leaderboard. Eligible trades made from the same address can still be indexed and reflected in leaderboard activity, including trades made outside Feel.cash, subject to the current leaderboard rules and normal indexing delays.

You can use the exported key to sign EVM transactions supported by your external wallet client. Always confirm the network, contract, recipient, amount, and permissions before signing.

## Gas Outside Feel.cash

Gas sponsorship applies only to supported transactions initiated through Feel.cash. When you use the exported wallet in an external client, Feel.cash does not sponsor the transaction. You must hold and pay the gas required by the network yourself.

Exporting a wallet is optional. You can continue using Feel.cash without handling a private key.


# Status and support

## Official product links

* Web: [feel.cash](https://feel.cash/)
* App download redirect: [feel.cash/download](https://feel.cash/download)

The download redirect selects the supported App Store or Google Play destination for the device and rollout stage.

## Contact

* Product and account support: `support@feel.cash`
* Impersonation, abuse, or trademarks: `abuse@feel.cash`
* Security disclosures: `security@feel.cash`

Never send a seed phrase, private key, recovery code, or raw authentication token to support.

## Report a product problem

Include only the information needed to investigate:

* operation type;
* chain and full contract address, when relevant;
* transaction hash or launch reservation reference;
* approximate timestamp and timezone;
* visible error message;
* app platform and version.

Do not publish private wallet, authentication, or account information in a public channel.

## During an incident

Check official Feel.cash product and social channels before retrying a launch, trade, deposit, withdrawal, cross-chain route, or fee claim.

A pending launch or settlement should be checked by its original reference. Repeatedly starting a new operation can make support diagnosis harder.

## Versioning

Protocol, API, fee, and launch-policy changes are recorded in git. Immutable rules stay attached to the coin that launched with them.

When current defaults differ from a historical coin, that coin's stored launch record and onchain configuration win.


