Replace order
curl --request POST \
--url https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"client_order_id": "<string>",
"idempotency_key": "<string>",
"price": "1655.00",
"quantity": "150.00"
}
'import requests
url = "https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace"
payload = {
"client_order_id": "<string>",
"idempotency_key": "<string>",
"price": "1655.00",
"quantity": "150.00"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-Api-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
client_order_id: '<string>',
idempotency_key: '<string>',
price: '1655.00',
quantity: '150.00'
})
};
fetch('https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace",
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([
'client_order_id' => '<string>',
'idempotency_key' => '<string>',
'price' => '1655.00',
'quantity' => '150.00'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"X-Api-Key: <api-key>"
],
]);
$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 := "https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace"
payload := strings.NewReader("{\n \"client_order_id\": \"<string>\",\n \"idempotency_key\": \"<string>\",\n \"price\": \"1655.00\",\n \"quantity\": \"150.00\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("X-Api-Key", "<api-key>")
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("https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace")
.header("Idempotency-Key", "<idempotency-key>")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"client_order_id\": \"<string>\",\n \"idempotency_key\": \"<string>\",\n \"price\": \"1655.00\",\n \"quantity\": \"150.00\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_order_id\": \"<string>\",\n \"idempotency_key\": \"<string>\",\n \"price\": \"1655.00\",\n \"quantity\": \"150.00\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"new_order_id": "0197f1f0-0000-7000-8000-000000000008",
"original_order_id": "0197f1f0-0000-7000-8000-000000000001",
"replaced_at": "2026-05-24T12:01:00Z",
"status": "replacing"
},
"status": "success"
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "invalid request parameters"
},
"status": "error"
}{
"error": {
"code": "UNAUTHORIZED",
"message": "missing X-Api-Key header"
},
"status": "error"
}{
"error": {
"code": "NOT_FOUND",
"message": "resource not found"
},
"status": "error"
}Exchange
Replace order
Submits a replacement intent for an existing limit order. Read the response and the returned order state before assuming the original order is no longer active.
POST
/
partner
/
exchange
/
orders
/
{order_id}
/
replace
Replace order
curl --request POST \
--url https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"client_order_id": "<string>",
"idempotency_key": "<string>",
"price": "1655.00",
"quantity": "150.00"
}
'import requests
url = "https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace"
payload = {
"client_order_id": "<string>",
"idempotency_key": "<string>",
"price": "1655.00",
"quantity": "150.00"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-Api-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
client_order_id: '<string>',
idempotency_key: '<string>',
price: '1655.00',
quantity: '150.00'
})
};
fetch('https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace",
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([
'client_order_id' => '<string>',
'idempotency_key' => '<string>',
'price' => '1655.00',
'quantity' => '150.00'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"X-Api-Key: <api-key>"
],
]);
$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 := "https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace"
payload := strings.NewReader("{\n \"client_order_id\": \"<string>\",\n \"idempotency_key\": \"<string>\",\n \"price\": \"1655.00\",\n \"quantity\": \"150.00\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("X-Api-Key", "<api-key>")
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("https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace")
.header("Idempotency-Key", "<idempotency-key>")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"client_order_id\": \"<string>\",\n \"idempotency_key\": \"<string>\",\n \"price\": \"1655.00\",\n \"quantity\": \"150.00\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stabyl.com/v1/partner/exchange/orders/{order_id}/replace")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_order_id\": \"<string>\",\n \"idempotency_key\": \"<string>\",\n \"price\": \"1655.00\",\n \"quantity\": \"150.00\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"new_order_id": "0197f1f0-0000-7000-8000-000000000008",
"original_order_id": "0197f1f0-0000-7000-8000-000000000001",
"replaced_at": "2026-05-24T12:01:00Z",
"status": "replacing"
},
"status": "success"
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "invalid request parameters"
},
"status": "error"
}{
"error": {
"code": "UNAUTHORIZED",
"message": "missing X-Api-Key header"
},
"status": "error"
}{
"error": {
"code": "NOT_FOUND",
"message": "resource not found"
},
"status": "error"
}Authorizations
API credential. Withdrawal quote and submit operations additionally require the documented Ed25519 timestamp, nonce, and signature headers.
Headers
Unique key for this exact write intent. Store it before sending the request and reuse it for retries after timeouts or transient errors.
Path Parameters
Public order ID returned by create or list order endpoints.
Body
application/json
Replacement values for the existing order. Use a new idempotency key for each distinct replacement intent.
Replacement values for an existing limit order.
Was this page helpful?
⌘I