POST
/
v1
/
pools
/
single-sided
Create Bonding Pool
curl --request POST \
  --url https://api.amm.flashnet.xyz/v1/pools/single-sided \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "assetAAddress": "0338d6978bd3163d1547f9ddb8b215d1c163bc7b4a552e559b89057f5449ba69de",
  "assetAInitialReserve": "1000000000",
  "assetBAddress": "020202020202020202020202020202020202020202020202020202020202020202",
  "graduationThresholdPct": 50,
  "hostNamespace": "my-cool-exchange",
  "lpFeeRateBps": "500",
  "nonce": "550e8400-e29b-41d4-a716-446655440000",
  "poolOwnerPublicKey": "03b06b7c3e39bf922be19b7ad5f19554bb7991cae585ed2e3374d51213ff4eeb3c",
  "signature": "3045022100a7e5d4f8b2c9a1e6f0d5b8c4a9e7f2d1c8b5a4e9f0d6c5b3a2e1d0c9b8a7f02201f2e3d4c5b6a7980e9f0a1b2c3d4e5f67889a0b1c2d3e4f5a6b7c8d9e0f1a2b3",
  "targetBRaisedAtGraduation": "10000000000",
  "totalHostFeeRateBps": "200"
}'
{
"message": "Pool created successfully. Please deposit initial liquidity to activate the pool.",
"poolId": "03poollpidentitypubkeyfedcba9876543210fedcba9876543210fedcba9876"
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

Single-sided pool creation parameters including bonding curve configuration and fee settings

Request body for creating a new single-sided AMM pool.

Single-sided pools allow liquidity providers to deposit only one asset (asset A), while the pool creates a Linear Price Ramp bonding curve against a paired asset (asset B). This is useful for launching new tokens with price discovery and initial liquidity.

poolOwnerPublicKey
string
required

Public key of the pool owner who will control the pool. Must match the authenticated user's public key.

Example:

"03b06b7c3e39bf922be19b7ad5f19554bb7991cae585ed2e3374d51213ff4eeb3c"

assetAAddress
string
required

Address of asset A (the deposited asset). This is the asset that liquidity providers will deposit.

Example:

"0338d6978bd3163d1547f9ddb8b215d1c163bc7b4a552e559b89057f5449ba69de"

assetBAddress
string
required

Address of asset B (the paired asset). This asset forms the other side of the trading pair.

Example:

"020202020202020202020202020202020202020202020202020202020202020202"

assetAInitialReserve
integer
required

Initial reserve amount for asset A in the smallest unit. This is the actual amount that will be deposited into the pool.

Required range: x >= 0
Example:

"1000000000"

virtualReserveA
integer
required

Virtual reserve amount for asset A in the smallest unit. This is the amount that will be used to calculate the price of the pool.

Required range: x >= 0
Example:

"5000000000"

virtualReserveB
integer
required

Virtual reserve amount for asset B in the smallest unit. This is the amount that will be used to calculate the price of the pool.

Required range: x >= 0
Example:

"10000000000"

threshold
integer
required

Amount of asset A that must be sold to graduate to constant product.

Required range: x >= 0
Example:

"1000000000"

lpFeeRateBps
integer
required

Liquidity provider fee rate in basis points (BPS). 1 BPS = 0.01%, so 500 BPS = 5% fee.

Required range: x >= 0
Example:

500

totalHostFeeRateBps
integer
required

Total host fee rate in basis points (BPS). Includes both host and Flashnet fees. Must be validated based on host configuration.

Required range: x >= 0
Example:

200

nonce
string
required

Unique nonce for replay protection. Must be a unique value that hasn't been used before.

Example:

"550e8400-e29b-41d4-a716-446655440000"

signature
string
required

Hex-encoded secp256k1 signature of the request. Must be signed by the private key corresponding to pool_owner_public_key.

Example:

"3045022100a7e5d4f8b2c9a1e6f0d5b8c4a9e7f2d1c8b5a4e9f0d6c5b3a2e1d0c9b8a7f02201f2e3d4c5b6a7980e9f0a1b2c3d4e5f67889a0b1c2d3e4f5a6b7c8d9e0f1a2b3"

hostNamespace
string | null

Optional host namespace for fee sharing. If provided, fees will be shared with the specified host.

Example:

"my-cool-exchange"

Response

Pool creation initiated. Initial deposit required to activate pool.

Response for pool creation

poolId
string
required

Pool ID (LP public key)

Example:

"03aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899"

message
string
required

Human-readable confirmation message

Example:

"Pool created successfully"