fused

Open JSON. No sign-up.

Developer API

Your bot can use FusedPad. The questions below are the short version. The routes under them are for wiring it.

Can I use an AI bot?+

Yes. It can read the board, fuse a coin, buy, sell, and claim. It uses its own Solana wallet. You do not make an account.

Does my bot need a key?+

No. Nothing to sign up for. Fused never asks for the private key. The bot signs on its own machine, the same way your wallet does.

Can it fuse a coin?+

Yes. It asks for two transactions, signs both, and sends the create first, then the register. After the create lands, it tells Fused and the coin shows on the board for everyone.

What if it looks like the launch failed?+

If the wallet says it landed, do not fuse it again. Tell Fused to record it. If the answer is that it has not confirmed yet, wait and record again.

Can it buy and sell?+

Yes. The easiest way is Jupiter's swap API with the coin's mint. Or it asks /api/swap for the trade, signs it, and sends it, paying with SOL, USDC, USDT, or the pair the coin is fused with.

Can it claim the creator fee?+

Yes, if that wallet fused the coin. Holder shares are sent in rounds. This claim is only the creator's share. The creator can claim the creator fee on either My Cache or the coin's own page, on the wick and after graduation.

What can it read?+

The pairs, one pair, how many pairs are ready, the $FUSED supply, the board, one coin, and the picture.

What can it not read?+

Market cap, volume, fees, burns, and what holders have been sent. If it wants a price, it already has the mint.

Will this spend my SOL by itself?+

No. Fused only hands back a transaction. Nothing moves until the bot signs it and sends it.

Quickstart

Call it from a terminal. The host is this site. A browser on another origin can call it too.

curl https://your-fuse-host/api/pairs?launch=true
curl https://your-fuse-host/api/pairs/AAPLx
curl https://your-fuse-host/api/stats
curl https://your-fuse-host/api/coins

Where the pairs come from

One feed. Jupiter's verified token list, cut to the pairs Fused has wired. A row appears only when that mint is one of those pairs and Jupiter returns it. SOL, USDC, and USDT are in that set. Prices, logos, and pool size come from Jupiter, across the venues it routes, including Raydium, Orca, and Meteora. Fused does not call those venues itself. A person still fuses a coin from Matchbox. A bot can ask for the same unsigned transactions below. Prices refresh about once a minute. Why the catalog is shorter than a thousand names is on the list.

GET

/api/pairs

The pairs a coin can trade against. Only pools deep enough to trade are listed. Every launch on any of them buys $FUSED and burns it from every trade.

curl 'https://your-fuse-host/api/pairs?q=apple&launch=true'
NameTypeUse
qstringMatch ticker or name. aapl matches AAPLx and Apple.
launchtrue or falsetrue keeps pairs you can fuse a coin with.
listedtrue or falsetrue keeps pairs that already have a pool.
providerstringExact provider name, such as xStocks, Backpack, Meme, or Alt.

The body is pairs, count, and syncedAt. syncedAt is unix milliseconds.

{
  "pairs": [
    {
      "ticker": "AAPLx",
      "name": "Apple xStock",
      "mint": "XsbEhLAtcf6HdfpFZ5xEMdqW8nfAvcsP5bdudRLJzJp",
      "icon": "https://xstocks-metadata.backed.fi/logos/tokens/AAPLx.png",
      "usd": 333.69,
      "change24h": 0.0349,
      "provider": "xStocks",
      "launch": true,
      "listed": true,
      "coins": 0,
      "poolUsd": 667576,
      "mcap": 18500000
    }
  ],
  "count": 1,
  "syncedAt": 1791309568735
}
GET

/api/pairs/{ticker}

One pair. The ticker is the symbol on the card: SOL, USDC, TSLAx, AAPLx. Case does not matter.

curl https://your-fuse-host/api/pairs/SPYx
NameTypeUse
tickerpathRequired. The pair symbol.

200 returns pair and syncedAt. 404 means that ticker is not in the catalog.

GET

/api/stats

How many pairs are in the catalog, how many you can fuse, how many already have a pool, and a count per provider.

curl https://your-fuse-host/api/stats

Call the route for the live counts. The body is catalog, launch, listed, providers, and syncedAt. Do not copy an old number from this page.

GET

/api/faq

The questions on the FAQ page. Same file, so the page and this feed match. No key.

curl https://your-fuse-host/api/faq

The body is updatedAt and entries. An answer is plain text. A hidden question is left out.

GET

/api/circulating-supply

Live $FUSED supply from the mint, minus the $FUSED still locked for the team in Jupiter Lock. This is the number Jupiter asks for. No key. The body is one number, not a string.

curl https://your-fuse-host/api/circulating-supply
{"circulatingSupply":668105745.937462}

The example is a past reading. The route calls the mint, so the number moves when supply moves.

GET

/api/coins

The board. Newest first. Old $FUSED mints are left out. This is the same list a person sees.

curl https://your-fuse-host/api/coins

The body is coins and count. lit is unix milliseconds.

{
  "coins": [
    {
      "name": "Flying Car",
      "ticker": "CAR",
      "pair": "SOL",
      "mint": "EpfABwfow7A134ok8AfturHk4chkHu7u816eAUuzccev",
      "pool": "the pool address",
      "lit": 1792186702000,
      "graduated": false,
      "description": "The words from Matchbox.",
      "links": { "x": "", "website": "", "telegram": "", "discord": "" },
      "image": "https://fusedpad.com/api/token/EpfABwfow7A134ok8AfturHk4chkHu7u816eAUuzccev/image"
    }
  ],
  "count": 1
}
GET

/api/coins/{mint}

One coin from the board. The mint is the coin address, not the pair.

curl https://your-fuse-host/api/coins/7SLA53amAEFJxaFJ4VLcS8RqxMg7Bmav1HnsCz7vpqhr

200 returns coin. 404 means that mint is not on the board.

POST

/api/coins/{mint}/edit

Change the picture, description, and links. Only the wallet that fused the coin can do this. Name, ticker, mint, pair, and pool are ignored.

curl -X POST https://your-fuse-host/api/coins/COIN_MINT/edit -H 'content-type: application/json' -d '{"wallet":"YOUR_WALLET","time":"2026-10-26T00:20:00Z","image":"","description":"A coin.","links":{"x":"","website":"","telegram":"","discord":""},"signature":"BASE64_SIGNATURE"}'

The creator's wallet signs this text, with the sha256 of the image, description, and links in that order:

Fused edit
<mint>
<time in UTC>
<sha256 of the edit values>

The time must be within 5 minutes, and each signature works once.

The sha256 is the hex digest of the JSON array [image, description, x, website, telegram, discord].

image in the hash is exactly the image value you send. To keep the current picture, send the image value from /api/coins for that coin. To change it, send a new data URL. To remove it, send an empty string.

200 means it saved. 400 is a bad picture, link, length, time, or a hash that does not match. 401 is a bad or reused signature. 403 is not the creator. 404 is an unknown mint. 429 is more than 20 edits of that coin today.

GET

/api/token/{mint}

The file a wallet reads for a coin that was fused with a picture. Name, ticker, description, and the picture link.

curl https://your-fuse-host/api/token/EpfABwfow7A134ok8AfturHk4chkHu7u816eAUuzccev

404 means that coin has no file. The official $FUSED file is /tokens/fused.json, not this route.

GET

/api/token/{mint}/image

The picture. JPEG or PNG. image on a coin is this address when a picture was saved, and empty when it was not.

curl https://your-fuse-host/api/token/EpfABwfow7A134ok8AfturHk4chkHu7u816eAUuzccev/image

404 means that coin has no picture. The official $FUSED picture is /brand/mark.png.

POST

/api/launch

Prepare a coin, or record it after the create confirms. The site does not send the transaction and does not take a key.

curl -X POST https://your-fuse-host/api/launch -H 'content-type: application/json' -d '{"wallet":"YOUR_WALLET","name":"Flying Car","ticker":"CAR","quote":"SOL","description":"A coin.","firstBuy":0,"image":"data:image/jpeg;base64,..."}'

Prepare returns two legacy transactions, create and register. The create may already be signed by the new mint and the launchpad signer. Add the wallet signature. Do not clear the other signatures, and do not change the transaction before you sign. Send create first, then register. Wait for create to confirm before you send register. Register can't be checked or sent until create has landed. firstBuy is paid in the pair, not always in SOL. One wallet can prepare four coins a minute. image is optional. Send a data URL (JPEG or PNG, under 400 KB, about 512 px square). It is saved for the coin page, the Board and the token metadata.

After the create confirms, POST again with action record, the signature, and the same mint, pool, quote, name, and ticker. If it has not confirmed, the answer is 409. Record again. Do not prepare a second coin.

Easiest way for bots: swap through Jupiter's swap API (https://dev.jup.ag/docs/ultra) with the coin's mint as the output (buy) or input (sell). Jupiter routes every FusedPad coin through its own pool in one transaction. Or use /api/swap below, which returns the same one-transaction Jupiter swap, or pays in the pair token itself.

POST

/api/swap

An unsigned buy or sell. Sign every step in order and send it yourself.

curl -X POST https://your-fuse-host/api/swap -H 'content-type: application/json' -d '{"wallet":"YOUR_WALLET","mint":"COIN_MINT","side":"buy","amount":0.1,"pay":"SOL"}'

pay is SOL, USDC, USDT, or the pair itself. side is buy or sell. amount is the token you are paying on a buy, and the coin on a sell. Paying with SOL, USDC or USDT returns one Jupiter transaction (kind jupiter). Sign it and POST it with its requestId to /api/swap/execute. Paying in the pair itself returns steps on the coin's pool. Sign and send them in order.

POST

/api/claim

The creator fee, unsigned. Only the wallet that fused the coin gets a transaction. After graduation this is the share set aside for the creator. If that is empty and a wick leftover remains, this is the wick claim.

curl -X POST https://your-fuse-host/api/claim -H 'content-type: application/json' -d '{"wallet":"YOUR_WALLET","mint":"COIN_MINT"}'

404 means nothing is waiting. This does not claim holder shares. Those are sent in rounds.

The transaction is in claim, not steps. Sign it and send it yourself.

One wallet can ask for a claim 4 times a minute. 429 means wait a minute, then ask again.

Not in this API

These reads do not return market cap, volume, fees, burns, or holder shares. A bot that wants a price already has the mint.

Pair fields

tickerSymbol. Use this when you fuse a coin and in /api/pairs/{ticker}.
nameDisplay name, such as Apple xStock.
mintSolana mint of the pair token. Always set.
iconLogo URL. It can be empty. Do not block the row on it.
usdPair price in dollars. This is not the price of a coin you fuse.
change24hFraction, not a percent. 0.0349 means +3.49%. 0 means the feed sent no change.
providerWho issues the token. xStocks, Backpack, Meme, Alt, and others.
launchTrue when Fused will let you fuse a coin with this pair. True for every row.
listedTrue when the pair has a real pool. True for every row.
poolUsdPool size in dollars, from Jupiter.
mcapMarket cap in dollars, from Jupiter. Alts and memes are listed highest first.
coinsHow many coins in this pair are on the Board. Hidden coins are not counted.

Wick

A new coin uses one wick. Coins launch at a market cap between about $2,500 and $4,000, depending on market moves in the paired token. The wick finishes after about $8,000 of that pair has been raised. That amount is paired with the new coin, and the coin graduates into a Meteora DAMM v2 pool with about $16,000 of liquidity. These amounts are estimates and move with the price of the paired token. The fee, holder shares, and the $FUSED buyback and burn continue on that pool.

Supply1,000,000,000
On the wickThe coin trades on the wick until about $8,000 of the pair has been raised. These amounts are estimates and move with the price of the paired token.
OpenCoins launch at a market cap between about $2,500 and $4,000, depending on market moves in the paired token.
GraduationAfter about $8,000 of the pair is raised, that amount is paired with the new coin. The coin migrates to a Meteora DAMM v2 pool with about $16,000 of liquidity. These amounts are estimates and move with the price of the paired token.
After thatThe 1.5% fee still applies on the DAMM v2 pool. The same split applies after graduation. Holders still earn a share of trading fees in the pair. The creator can claim the creator fee on either My Cache or the coin's own page, on the wick and after graduation. Every trade still buys $FUSED and burns it.
Fee1.5% of every trade, on the wick and in the pool. A transfer does not pay it.
Meteora0.30%
Creatorabout 0.1%. The creator can claim the creator fee on either My Cache or the coin's own page, on the wick and after graduation.
Holders0.90% of every trade, a share of trading fees in the pair, sent in rounds
Burns $FUSED0.20% of every trade, on every pair, buys $FUSED and burns it. After $FUSED graduates, 0.10% is burned and 0.10% adds locked liquidity to the $FUSED pool.
PoolMeteora Dynamic Bonding Curve. Your wallet signs the launch. This API does not.
Holder shares and burnTrading fees build up with Meteora. About every 6 hours, FusedPad's crank calls the Fused program to collect them. The program splits them between holders and the $FUSED burn (and the creator, after graduation). Holders are paid, and $FUSED is bought and burned once a coin's pot is big enough. Not a second swap inside the buy.
Paid in the pairThe swap is that Meteora pool.
Paid in another tokenWhen that is not the pair, Jupiter routes it into the pair, then the pair enters the pool.
First buyOptional, and it is paid in the pair you chose. Not always SOL.

Burn mint 7SLA53amAEFJxaFJ4VLcS8RqxMg7Bmav1HnsCz7vpqhr

Choose a pair, then fuse a coin. The coin trades on Meteora. Trades on the coin page run through Jupiter in one transaction, and Jupiter is also the pair feed. Connect shows your Solana address. A Matchbox launch asks the wallet once to sign the pool and its register. Some wallets ask twice.

Errors

A failure returns { "error": "..." }. Branch on the status.

400The body is missing a field, it included a private key, or Jupiter could not build the swap route (wait a minute and ask again). Nothing was signed.
404No pair with that ticker, no coin with that mint, no picture, or nothing to claim.
405Wrong method. Reads are GET. Launch, swap, and claim are POST.
409The create has not confirmed. Record again. Do not prepare another coin.
429That wallet asked too many times this minute. Wait, then call again.
503A feed did not answer. Wait a minute and call again.

Fair use

Reads are open. Writes are limited per wallet, about four launches a minute, four claims, and eight swaps. There is no paid tier and no key to raise a limit. Read responses cache for about half a minute, so polling faster than that does not get you a newer price. If you need a launch button, read launch from /api/pairs instead of hardcoding a list.