curl --request POST \
--url http://localhost:8000/gateway/amm/create-pool \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"connector": "<string>",
"network": "<string>",
"base_token": "<string>",
"quote_token": "<string>",
"base_token_amount": 123,
"quote_token_amount": 123,
"initial_price": 123,
"slippage_pct": 123,
"wallet_address": "<string>",
"extra_params": {}
}
'import requests
url = "http://localhost:8000/gateway/amm/create-pool"
payload = {
"connector": "<string>",
"network": "<string>",
"base_token": "<string>",
"quote_token": "<string>",
"base_token_amount": 123,
"quote_token_amount": 123,
"initial_price": 123,
"slippage_pct": 123,
"wallet_address": "<string>",
"extra_params": {}
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
connector: '<string>',
network: '<string>',
base_token: '<string>',
quote_token: '<string>',
base_token_amount: 123,
quote_token_amount: 123,
initial_price: 123,
slippage_pct: 123,
wallet_address: '<string>',
extra_params: {}
})
};
fetch('http://localhost:8000/gateway/amm/create-pool', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8000",
CURLOPT_URL => "http://localhost:8000/gateway/amm/create-pool",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'connector' => '<string>',
'network' => '<string>',
'base_token' => '<string>',
'quote_token' => '<string>',
'base_token_amount' => 123,
'quote_token_amount' => 123,
'initial_price' => 123,
'slippage_pct' => 123,
'wallet_address' => '<string>',
'extra_params' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:8000/gateway/amm/create-pool"
payload := strings.NewReader("{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"base_token\": \"<string>\",\n \"quote_token\": \"<string>\",\n \"base_token_amount\": 123,\n \"quote_token_amount\": 123,\n \"initial_price\": 123,\n \"slippage_pct\": 123,\n \"wallet_address\": \"<string>\",\n \"extra_params\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8000/gateway/amm/create-pool")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"base_token\": \"<string>\",\n \"quote_token\": \"<string>\",\n \"base_token_amount\": 123,\n \"quote_token_amount\": 123,\n \"initial_price\": 123,\n \"slippage_pct\": 123,\n \"wallet_address\": \"<string>\",\n \"extra_params\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8000/gateway/amm/create-pool")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"base_token\": \"<string>\",\n \"quote_token\": \"<string>\",\n \"base_token_amount\": 123,\n \"quote_token_amount\": 123,\n \"initial_price\": 123,\n \"slippage_pct\": 123,\n \"wallet_address\": \"<string>\",\n \"extra_params\": {}\n}"
response = http.request(request)
puts response.read_body{
"signature": "<string>",
"status": "<string>",
"poolAddress": "<string>",
"price": "<string>",
"data": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Create Amm Pool
Create and seed a new AMM pool.
Seed price priority: initial_price → quote_token_amount ratio → live market price (anti-snipe). Connector-specific params ride extra_params under Gateway’s own names (configAddress for meteora — required there, ammConfigIndex for raydium) — the same contract as clmm open’s extra_params. Seeding slippage for uniswap/pancakeswap is the standard slippage_pct field.
curl --request POST \
--url http://localhost:8000/gateway/amm/create-pool \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"connector": "<string>",
"network": "<string>",
"base_token": "<string>",
"quote_token": "<string>",
"base_token_amount": 123,
"quote_token_amount": 123,
"initial_price": 123,
"slippage_pct": 123,
"wallet_address": "<string>",
"extra_params": {}
}
'import requests
url = "http://localhost:8000/gateway/amm/create-pool"
payload = {
"connector": "<string>",
"network": "<string>",
"base_token": "<string>",
"quote_token": "<string>",
"base_token_amount": 123,
"quote_token_amount": 123,
"initial_price": 123,
"slippage_pct": 123,
"wallet_address": "<string>",
"extra_params": {}
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
connector: '<string>',
network: '<string>',
base_token: '<string>',
quote_token: '<string>',
base_token_amount: 123,
quote_token_amount: 123,
initial_price: 123,
slippage_pct: 123,
wallet_address: '<string>',
extra_params: {}
})
};
fetch('http://localhost:8000/gateway/amm/create-pool', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8000",
CURLOPT_URL => "http://localhost:8000/gateway/amm/create-pool",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'connector' => '<string>',
'network' => '<string>',
'base_token' => '<string>',
'quote_token' => '<string>',
'base_token_amount' => 123,
'quote_token_amount' => 123,
'initial_price' => 123,
'slippage_pct' => 123,
'wallet_address' => '<string>',
'extra_params' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:8000/gateway/amm/create-pool"
payload := strings.NewReader("{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"base_token\": \"<string>\",\n \"quote_token\": \"<string>\",\n \"base_token_amount\": 123,\n \"quote_token_amount\": 123,\n \"initial_price\": 123,\n \"slippage_pct\": 123,\n \"wallet_address\": \"<string>\",\n \"extra_params\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8000/gateway/amm/create-pool")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"base_token\": \"<string>\",\n \"quote_token\": \"<string>\",\n \"base_token_amount\": 123,\n \"quote_token_amount\": 123,\n \"initial_price\": 123,\n \"slippage_pct\": 123,\n \"wallet_address\": \"<string>\",\n \"extra_params\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8000/gateway/amm/create-pool")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"base_token\": \"<string>\",\n \"quote_token\": \"<string>\",\n \"base_token_amount\": 123,\n \"quote_token_amount\": 123,\n \"initial_price\": 123,\n \"slippage_pct\": 123,\n \"wallet_address\": \"<string>\",\n \"extra_params\": {}\n}"
response = http.request(request)
puts response.read_body{
"signature": "<string>",
"status": "<string>",
"poolAddress": "<string>",
"price": "<string>",
"data": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Body
Request to create and seed a new AMM pool.
AMM connector (e.g., 'meteora', 'raydium', 'uniswap')
Network ID in 'chain-network' format (e.g., 'solana-mainnet-beta')
Base token symbol or address (becomes the pool base)
Quote token symbol or address (becomes the pool quote)
Amount of base token to seed the pool with
Amount of quote to seed (sets price if given)
Initial price (quote per base); overrides quote amount
Seeding slippage percentage (uniswap/pancakeswap only); omit to use the connector's configured slippagePct
Wallet address (optional, uses default)
Connector-specific create params, passed through to Gateway under its own names: configAddress (meteora DAMM v2, required there), ammConfigIndex (raydium CPMM). Unknown keys are rejected.
Response
Successful Response
Response after creating an AMM pool.
Transaction signature (Solana) or transaction hash (EVM)
Transaction status: SUBMITTED, CONFIRMED or FAILED. Mapped from Gateway's TransactionStatus enum by the same helper the swap and CLMM surfaces use, so one vocabulary spans all three.
Address of the newly created pool
Initial price the pool was seeded at (quote per base)
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Connector-specific confirmed-tx details
Was this page helpful?

