Developer API

Read market data and launch coins without asking anybody. There is no API key and nothing to sign up for: reading is open, and anything that moves money is a NEAR transaction signed by your own wallet — stronger proof than any key we could issue.

Non-custodial throughout. We never ask for, accept or store a private key, and no endpoint signs anything on your behalf.

Base URL /api/public/v1Preview

Preview: the HTTP API goes live with the Zear backend on NEAR. The contract calls below are the launchpad's interface.


Quickstart

Every endpoint is open behind a per-minute rate limit per IP address. Start from a terminal:

Terminal

# No key, no signup, no plan. Just call it.
curl https://zear-test.netlify.app/api/public/v1/tokens?sort=new

# One coin: its curve, its pair, its price.
curl https://zear-test.netlify.app/api/public/v1/tokens/ncat-1.zearlaunchpad.near

Building it yourself

Everything the site does is a call to one contract, zearlaunchpad.near. You can skip the API entirely and call it from near-cli, near-api-js or any wallet — your own front end, your own bot, your own batch.

Launching. create_token takes the coin's metadata, its quote token and its tax (and, optionally, its curve size, size_bps), and the NEAR you attach pays the launch fee, the new token's storage and, for a NEAR-paired coin, the first buy. Each coin gets its own account, <symbol>-<n>.zearlaunchpad.near, a NEP-141 with a fixed supply and a buy and a sell tax of up to 10% each, charged in the quote token on the curve and in the coin on Rhea, plus a 1% platform fee on each trade while the coin is on its curve. The platform takes none of the tax; your split shares all of it out between the creator funds wallet, the holders, buybacks that burn the coin, and its Rhea pool. Wallet-to-wallet transfers pay nothing.

near-cli

# Launch paired with NEAR, with a 5 NEAR first buy: Diamond hands, a 3% buy and sell tax,
# all of it paid to the holders (the platform takes none of the tax, only its 1% fee).
# Attach the launch cost + the buy; nothing trades before yours. The launch cost is
# launch_cost_for({"icon_bytes": "<length of your icon>", "quote_token", "tax_coin": true}):
# 0.12298 NEAR (0.12423 NEAR paired with a token), plus 0.00001 NEAR
# per byte of icon, which the coin's account needs to store it.
near call zearlaunchpad.near create_token '{"name":"Neural Cat","symbol":"NCAT","icon":null,"description":"","socials":{},"quote_token":"wrap.near","min_tokens_out":"0","tax":{"buy_bps":300,"sell_bps":300,"creator_bps":0,"dividends_bps":10000,"buyback_bps":0,"liquidity_bps":0}}' \
  --deposit 5.12298 --gas 300000000000000 --accountId you.near

# Your own rates and split: 3% on buys, 5% on sells; of the whole tax, 40% to
# the creator funds wallet (fee_recipient, yours when left out), 30% to holders, 20% bought
# back and burned, 10% added to the Rhea pool. The shares must total 10000 bps.
near call zearlaunchpad.near create_token '{"name":"Neural Cat","symbol":"NCAT","icon":null,"description":"","socials":{},"quote_token":"wrap.near","min_tokens_out":"0","tax":{"buy_bps":300,"sell_bps":500,"creator_bps":4000,"dividends_bps":3000,"buyback_bps":2000,"liquidity_bps":1000},"fee_recipient":"treasury.near"}' \
  --deposit 0.12298 --gas 300000000000000 --accountId you.near

# A bigger curve: size_bps sizes it against the quote token's listing (10000, the default, is
# the listing). 20000 opens at twice the price and graduates at twice the raise, with the same
# share of supply sold; get_config's min_size_bps..max_size_bps is the range it takes.
near call zearlaunchpad.near create_token '{"name":"Neural Cat","symbol":"NCAT","icon":null,"description":"","socials":{},"quote_token":"wrap.near","min_tokens_out":"0","tax":{"buy_bps":300,"sell_bps":300,"creator_bps":0,"dividends_bps":10000,"buyback_bps":0,"liquidity_bps":0},"size_bps":20000}' \
  --deposit 0.12298 --gas 300000000000000 --accountId you.near

Trading. A coin paired with NEAR is bought by attaching NEAR to buy. A coin paired with any other token is bought by sending that token to the launchpad with ft_transfer_calland a buy message; whatever is not spent — past the graduation cap, say — comes back. A sell is always the coin sent to the launchpad. Register on a token (storage_deposit) before you first hold it, with what its storage_balance_bounds asks: a tax token asks more, as it also keeps your dividends. On the curve, a tax token's buy or sell tax is its only fee, in the quote token. On Rhea the coin takes it itself, on the swap's coin leg: coins leaving Rhea (a buy) pay the buy tax out of what you receive; coins sent into Rhea with ft_transfer_call (a sell) arrive whole — a swap that names its amount finds it all there — and the sell tax is taken from you besides, given back on whatever Rhea returns. Wallet-to-wallet transfers pay nothing. Its tax_info says so: buy_bps, sell_bps, the dex it taxes, and "transfer_call_tax": "on_top". Reward tokens, launched before, tax every transfer instead; their reward_info says so.

Sizing. Every pairing opens and graduates at the same dollar value, so the curve's quote side differs per token. Read each one's sizing from GET /api/public/v1/quotes rather than hard-coding it.

near-cli

# Buy a NEAR-paired coin with 1 NEAR (min_tokens_out is your slippage floor).
near call zearlaunchpad.near buy '{"token_id":"ncat-1.zearlaunchpad.near","min_tokens_out":"0"}' \
  --deposit 1 --gas 100000000000000 --accountId you.near

# Buy a USDC-paired coin with 10 USDC: send it to the launchpad with a buy message.
near call 17208628f84f5d6ad33f0da3bbbeb27ffcb398eac501a31bd6ad2011e36133a1 ft_transfer_call '{"receiver_id":"zearlaunchpad.near","amount":"10000000","msg":"{\"buy\":{\"token_id\":\"gray-3.zearlaunchpad.near\",\"min_tokens_out\":\"0\"}}"}' \
  --depositYocto 1 --gas 150000000000000 --accountId you.near

# Sell: send the coin to the launchpad with a sell message.
near call ncat-1.zearlaunchpad.near ft_transfer_call '{"receiver_id":"zearlaunchpad.near","amount":"1000000000000000000000","msg":"{\"sell\":{\"min_quote_out\":\"0\"}}"}' \
  --depositYocto 1 --gas 150000000000000 --accountId you.near

Claiming fees and rewards

A tax token's creator share of every tax accrues in its quote token, and claim_creator_fees pays it to the coin's creator funds wallet; anyone may call it. Its holders' share is paid as dividends: Zear's keeper pays the largest holdings every hour once they are owed enough, and each holder can claim theirs from the coin at any time. (A standard or reward token pays its creator 5% of the curve fee, claimed by the creator alone; a reward token's holders earn its tax the same way.)

near-cli

# Anyone: pay out a tax coin's creator fees, in its quote token, to its creator funds wallet.
# (A standard or reward coin's go to its creator, who alone can claim them.)
near call zearlaunchpad.near claim_creator_fees '{"token_id":"ncat-1.zearlaunchpad.near"}' \
  --depositYocto 1 --gas 50000000000000 --accountId you.near

# A holder: the dividends you can claim now (raw units of the quote token) ...
near view ncat-1.zearlaunchpad.near rewards_of '{"account_id":"you.near"}'
# ... and claim them, from the coin itself.
near call ncat-1.zearlaunchpad.near claim_rewards '{}' \
  --depositYocto 1 --gas 50000000000000 --accountId you.near

The tax at work

The platform takes none of the tax; the creator's split shares out all of it. On the curve each share is credited in the trade itself. On Rhea the coin collects its tax in coins, and harvest takes them: the buyback share is burned on the spot, the liquidity share kept for the pool, the rest sold for the quote token and credited. Once a coin has graduated, buyback spends its buyback budget on Rhea (at most 0.5% of the pool's quote side, 10 minutes apart, within 1% of the pool's price) and burns what it buys; add_liquidity pairs its liquidity budgets at the pool's price and adds them, and the pool shares stay with the launchpad, which has no way to remove them.

near-cli

# A tax coin's rates, split, fee wallet and every bucket, as the launchpad keeps them:
near view zearlaunchpad.near get_coin '{"token_id":"ncat-1.zearlaunchpad.near"}'   # .tax
# What the coin itself holds: its tax pot (taxed on Rhea, waiting to be harvested), dividends
# received and paid, and its rules (the rates it charges on Rhea's legs).
near view ncat-1.zearlaunchpad.near tax_info

# The keeper runs these; anyone may. Each call moves its job one step: call again until
# get_coin's "harvest" / "tax.job" is empty.
near call zearlaunchpad.near harvest '{"token_id":"ncat-1.zearlaunchpad.near"}' \
  --deposit 0 --gas 300000000000000 --accountId you.near
near call zearlaunchpad.near buyback '{"token_id":"ncat-1.zearlaunchpad.near"}' \
  --deposit 0 --gas 300000000000000 --accountId you.near
near call zearlaunchpad.near add_liquidity '{"token_id":"ncat-1.zearlaunchpad.near"}' \
  --deposit 0 --gas 300000000000000 --accountId you.near

Every step logs an event from the launchpad, under the zear standard: tax_allocated (a curve trade's tax, split five ways), harvest_step and tax_harvested (a harvest, and what its sale fetched), buyback_step and buyback, liquidity_step and liquidity_added. The index serves the results: GET /api/public/v1/tokens/{token}/buybacks and /liquidity, and each coin's tax in /tokens/{token}.


Rate limits

Every endpoint is open behind a per-minute limit per IP address. Past it, the API answers 429 with a Retry-After header in seconds. The contract has no limit beyond NEAR's own gas.


Endpoint reference

All under /api/public/v1. Amounts are decimal strings in raw units (NEAR has 24 decimals, a coin 18); USD figures are numbers.

MethodPathParametersReturns
GET/tokenssort=marketCap|new|volume|progress, status, category, q, page, pageSizeThe marketplace, a page at a time.
GET/tokens/{token}—One coin: pair, curve, price, market cap, 24h volume and change.
GET/tokens/{token}/tradeslimitIts trades on the curve and on Rhea, newest first.
GET/tokens/{token}/holderslimitIts largest holders, with their share and value.
GET/tokens/{token}/candlesinterval=1m|5m|15m|1h|4h|1d|1w, limitIts newest price candles, however long ago they traded, oldest first; each opens at the close before it.
GET/tokens/{token}/buybackslimitA tax coin's buybacks and the tax it burned, newest first.
GET/tokens/{token}/liquiditylimitA tax coin's liquidity adds, and the coins its harvests kept for them, newest first.
GET/searchq, limitCoins and accounts a term finds — a few of each, and how many there are.
GET/accounts/{account}/holdings—The coins an account holds.
GET/accounts/{account}/rewards—The reward and tax coins an account holds or was paid by, and what each paid it.
GET/quotes—The quote tokens, and each one's curve sizing.
GET/flywheel—Current rankings and buyback burns.
GET/revenuerange=24h|7d|30d|allVolume, revenue, creator fees and buybacks.
GET/rewards—Holder rewards: what each reward and tax coin has distributed and paid its holders.
GET/rewards/distributionstoken, limitReward coins' distributions to their holders, newest first.
GET/creator-rewardscreatorCreator rewards, site-wide or for one account.
GET/activitylimitThe newest launches, trades, graduations and Rhea swaps, newest first.

Errors

Every error is JSON with a sentence in it: 400 for a bad parameter, 404 for a coin that does not exist, 429 for the rate limit, and 5xx for our side, which is worth retrying.

Terminal

curl -i https://zear-test.netlify.app/api/public/v1/tokens/nope.near
HTTP/1.1 404 Not Found
content-type: application/json

{ "error": "No coin at nope.near" }