Before you integrate
The API is public and in beta. It may be rate-limited, narrowed, or paused without notice. All requests below refer to the official host: https://www.featherfi.finance.
An exact-input quote starts with a fixed sell amount. The taker must be the wallet that will actually submit the transaction on Robinhood Chain mainnet, chain ID 4663.
Find and resolve tokens
https://www.featherfi.finance/api/v1/swap/tokensReturns the canonical verified starter registry: ETH, USDG, and WETH.
https://www.featherfi.finance/api/v1/swap/tokens/:addressReplace :address with a token contract address. This endpoint resolves one custom ERC-20 using current on-chain code and canonical metadata. Resolving it does not add it to the verified list; custom tokens remain unverified.
Verified means admitted to the starter registry, not audited or safe.
Request an exact-input quote
POST /api/v1/swap/quote returns a short-lived route only when it is safe to expose an executable transaction. Responses use no-store. Quotes expire after 15 seconds.
curl -sS https://www.featherfi.finance/api/v1/swap/quote \
-H 'content-type: application/json' \
--data '{
"chainId": 4663,
"sellToken": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
"buyToken": "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
"sellAmount": "10000000000000",
"slippageBps": 100,
"taker": "0x1111111111111111111111111111111111111111"
}'| Field | Meaning |
|---|---|
| chainId | 4663 for Robinhood Chain mainnet. |
| sellToken / buyToken | Asset addresses. The example uses the native-ETH identifier and USDG address from the official reference. |
| sellAmount | An integer string in base units. The example is 0.00001 ETH. |
| slippageBps | Integer from 1 to 100 bps (0.01% to 1%). The example uses 100 bps (1%), the browser default. Values outside this range are rejected. |
| taker | The actual wallet that will submit the transaction. |
What a successful quote includes
- Normalized token metadata, amounts, and minimum received.
- Gas estimate, route fills, and disclosed fees.
- Allowance target and exact transaction fields.
- Observations, expiry, and executable: true.
The form uses the separate /api/v1/swap/preview endpoint for initial and input-driven estimates, with the same selected slippageBps. These responses have executable: false and contain no transaction payload. Expiry keeps only the labeled previous amount and offers Refresh estimate; idle tabs do not poll for prices. Review swap requests a fresh executable quote when the allowance is already exact or the sell token is native ETH. Otherwise the user reviews a non-executable preview and explicitly approves the token first. After all required approvals confirm, show a fresh executable quote for a separate Confirm swap action. Executable quotes are never automatically refreshed or submitted.
Bind review and confirmation to the exact sell amount, resolved tokens, slippage, taker, chain, and quote expiry. Any edit or wallet change invalidates that review. An expired quote blocks confirmation; an explicit refresh must produce a new review before confirmation can resume. Display minimumBuyAmount and each fee or network-cost component in its own token units.
Check service status
https://www.featherfi.finance/api/v1/swap/statusReturns the public kill-switch state, configuration readiness, and mainnet RPC health. Treat any non-2xx response as unavailable.
Respect HTTP 429, the Retry-After header, HTTP 503, and the kill switch. Do not assume an earlier healthy status still applies at submission time.
Required integration behavior
- Revalidate provider fields: target, calldata, value, fee, taker, pair, selected slippage, chain, complete simulation result, and expiry.
- Require separate review and confirmation. Neither opening review, refreshing a quote, nor approving a token authorizes swap submission.
- Persist the transaction hash before awaiting its receipt. Block duplicate submissions across tabs.
- Honor rate limits and readiness. Respect 429, Retry-After, 503, and disabled kill-switch states.
- Keep credentials private. Neither private keys nor 0x provider credentials belong in the browser.
