curl --request POST \
--url http://localhost:8000/gateway/clmm/create-pool \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"connector": "<string>",
"network": "<string>",
"base_token": "<string>",
"quote_token": "<string>",
"initial_price": 123,
"wallet_address": "<string>",
"extra_params": {}
}
'import requests
url = "http://localhost:8000/gateway/clmm/create-pool"
payload = {
"connector": "<string>",
"network": "<string>",
"base_token": "<string>",
"quote_token": "<string>",
"initial_price": 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>',
initial_price: 123,
wallet_address: '<string>',
extra_params: {}
})
};
fetch('http://localhost:8000/gateway/clmm/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/clmm/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>',
'initial_price' => 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/clmm/create-pool"
payload := strings.NewReader("{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"base_token\": \"<string>\",\n \"quote_token\": \"<string>\",\n \"initial_price\": 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/clmm/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 \"initial_price\": 123,\n \"wallet_address\": \"<string>\",\n \"extra_params\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8000/gateway/clmm/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 \"initial_price\": 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 Clmm Pool
Create a new (empty) CLMM pool — liquidity is added afterwards by opening positions.
Mirrors Gateway’s POST /trading/clmm/create-pool (which shares the AMM create-pool response shape). Connector-specific params ride extra_params under Gateway’s own names — the same contract as open’s extra_params.
curl --request POST \
--url http://localhost:8000/gateway/clmm/create-pool \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"connector": "<string>",
"network": "<string>",
"base_token": "<string>",
"quote_token": "<string>",
"initial_price": 123,
"wallet_address": "<string>",
"extra_params": {}
}
'import requests
url = "http://localhost:8000/gateway/clmm/create-pool"
payload = {
"connector": "<string>",
"network": "<string>",
"base_token": "<string>",
"quote_token": "<string>",
"initial_price": 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>',
initial_price: 123,
wallet_address: '<string>',
extra_params: {}
})
};
fetch('http://localhost:8000/gateway/clmm/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/clmm/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>',
'initial_price' => 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/clmm/create-pool"
payload := strings.NewReader("{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"base_token\": \"<string>\",\n \"quote_token\": \"<string>\",\n \"initial_price\": 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/clmm/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 \"initial_price\": 123,\n \"wallet_address\": \"<string>\",\n \"extra_params\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8000/gateway/clmm/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 \"initial_price\": 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 a new (empty) CLMM pool — liquidity is added by opening positions.
Mirrors Gateway's POST /trading/clmm/create-pool. Connector extras are consumed only by their owning connector.
CLMM connector (e.g., 'meteora', 'raydium', 'orca', 'uniswap')
Network ID in 'chain-network' format (e.g., 'solana-mainnet-beta')
Base token symbol or address
Quote token symbol or address
Initial price (quote per base); market price when omitted
Wallet address (optional, uses default)
Connector-specific create params, passed through to Gateway under its own names: binStep (meteora, orca), feeBps (meteora; required for uniswap/pancakeswap — the V3 fee tier in basis points), ammConfigIndex (raydium, pancakeswap-sol). 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?

