curl --request POST \
--url https://api.orderly.org/v1/batch-order \
--header 'Content-Type: application/json' \
--header 'orderly-account-id: <orderly-account-id>' \
--header 'orderly-key: <orderly-key>' \
--header 'orderly-signature: <orderly-signature>' \
--header 'orderly-timestamp: <orderly-timestamp>' \
--data '
{
"orders": [
{
"symbol": "<string>",
"order_type": "<string>",
"side": "<string>",
"client_order_id": "<string>",
"order_price": 123,
"order_quantity": 123,
"order_amount": 123,
"reduce_only": true,
"visible_quantity": 123,
"order_tag": "enum:broker_b:GRID_PRO"
}
]
}
'import requests
url = "https://api.orderly.org/v1/batch-order"
payload = { "orders": [
{
"symbol": "<string>",
"order_type": "<string>",
"side": "<string>",
"client_order_id": "<string>",
"order_price": 123,
"order_quantity": 123,
"order_amount": 123,
"reduce_only": True,
"visible_quantity": 123,
"order_tag": "enum:broker_b:GRID_PRO"
}
] }
headers = {
"orderly-timestamp": "<orderly-timestamp>",
"orderly-account-id": "<orderly-account-id>",
"orderly-key": "<orderly-key>",
"orderly-signature": "<orderly-signature>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'orderly-timestamp': '<orderly-timestamp>',
'orderly-account-id': '<orderly-account-id>',
'orderly-key': '<orderly-key>',
'orderly-signature': '<orderly-signature>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
orders: [
{
symbol: '<string>',
order_type: '<string>',
side: '<string>',
client_order_id: '<string>',
order_price: 123,
order_quantity: 123,
order_amount: 123,
reduce_only: true,
visible_quantity: 123,
order_tag: 'enum:broker_b:GRID_PRO'
}
]
})
};
fetch('https://api.orderly.org/v1/batch-order', 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.orderly.org/v1/batch-order",
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([
'orders' => [
[
'symbol' => '<string>',
'order_type' => '<string>',
'side' => '<string>',
'client_order_id' => '<string>',
'order_price' => 123,
'order_quantity' => 123,
'order_amount' => 123,
'reduce_only' => true,
'visible_quantity' => 123,
'order_tag' => 'enum:broker_b:GRID_PRO'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"orderly-account-id: <orderly-account-id>",
"orderly-key: <orderly-key>",
"orderly-signature: <orderly-signature>",
"orderly-timestamp: <orderly-timestamp>"
],
]);
$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.orderly.org/v1/batch-order"
payload := strings.NewReader("{\n \"orders\": [\n {\n \"symbol\": \"<string>\",\n \"order_type\": \"<string>\",\n \"side\": \"<string>\",\n \"client_order_id\": \"<string>\",\n \"order_price\": 123,\n \"order_quantity\": 123,\n \"order_amount\": 123,\n \"reduce_only\": true,\n \"visible_quantity\": 123,\n \"order_tag\": \"enum:broker_b:GRID_PRO\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("orderly-timestamp", "<orderly-timestamp>")
req.Header.Add("orderly-account-id", "<orderly-account-id>")
req.Header.Add("orderly-key", "<orderly-key>")
req.Header.Add("orderly-signature", "<orderly-signature>")
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.orderly.org/v1/batch-order")
.header("orderly-timestamp", "<orderly-timestamp>")
.header("orderly-account-id", "<orderly-account-id>")
.header("orderly-key", "<orderly-key>")
.header("orderly-signature", "<orderly-signature>")
.header("Content-Type", "application/json")
.body("{\n \"orders\": [\n {\n \"symbol\": \"<string>\",\n \"order_type\": \"<string>\",\n \"side\": \"<string>\",\n \"client_order_id\": \"<string>\",\n \"order_price\": 123,\n \"order_quantity\": 123,\n \"order_amount\": 123,\n \"reduce_only\": true,\n \"visible_quantity\": 123,\n \"order_tag\": \"enum:broker_b:GRID_PRO\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orderly.org/v1/batch-order")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["orderly-timestamp"] = '<orderly-timestamp>'
request["orderly-account-id"] = '<orderly-account-id>'
request["orderly-key"] = '<orderly-key>'
request["orderly-signature"] = '<orderly-signature>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"orders\": [\n {\n \"symbol\": \"<string>\",\n \"order_type\": \"<string>\",\n \"side\": \"<string>\",\n \"client_order_id\": \"<string>\",\n \"order_price\": 123,\n \"order_quantity\": 123,\n \"order_amount\": 123,\n \"reduce_only\": true,\n \"visible_quantity\": 123,\n \"order_tag\": \"enum:broker_b:GRID_PRO\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"rows": [
{
"order_id": 13,
"client_order_id": "testclientid",
"order_type": "LIMIT",
"order_price": 100.12,
"order_quantity": 0.987654,
"error_message": "none"
}
]
},
"timestamp": 1702989203989
}Batch create order
Limit: 1 request per 1 second
POST /v1/batch-order
Creates up to 10 orders in one request. Send the orders in the orders JSON array. Each order in the request counts as one order toward the overall create order rate limit.
Supports reduce-only orders. Set reduce_only: true on an individual item in the orders array to restrict that order to reducing an existing position. Configure this flag independently for each order in the batch.
Note: This endpoint requires trading scope in orderly key.
curl --request POST \
--url https://api.orderly.org/v1/batch-order \
--header 'Content-Type: application/json' \
--header 'orderly-account-id: <orderly-account-id>' \
--header 'orderly-key: <orderly-key>' \
--header 'orderly-signature: <orderly-signature>' \
--header 'orderly-timestamp: <orderly-timestamp>' \
--data '
{
"orders": [
{
"symbol": "<string>",
"order_type": "<string>",
"side": "<string>",
"client_order_id": "<string>",
"order_price": 123,
"order_quantity": 123,
"order_amount": 123,
"reduce_only": true,
"visible_quantity": 123,
"order_tag": "enum:broker_b:GRID_PRO"
}
]
}
'import requests
url = "https://api.orderly.org/v1/batch-order"
payload = { "orders": [
{
"symbol": "<string>",
"order_type": "<string>",
"side": "<string>",
"client_order_id": "<string>",
"order_price": 123,
"order_quantity": 123,
"order_amount": 123,
"reduce_only": True,
"visible_quantity": 123,
"order_tag": "enum:broker_b:GRID_PRO"
}
] }
headers = {
"orderly-timestamp": "<orderly-timestamp>",
"orderly-account-id": "<orderly-account-id>",
"orderly-key": "<orderly-key>",
"orderly-signature": "<orderly-signature>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'orderly-timestamp': '<orderly-timestamp>',
'orderly-account-id': '<orderly-account-id>',
'orderly-key': '<orderly-key>',
'orderly-signature': '<orderly-signature>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
orders: [
{
symbol: '<string>',
order_type: '<string>',
side: '<string>',
client_order_id: '<string>',
order_price: 123,
order_quantity: 123,
order_amount: 123,
reduce_only: true,
visible_quantity: 123,
order_tag: 'enum:broker_b:GRID_PRO'
}
]
})
};
fetch('https://api.orderly.org/v1/batch-order', 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.orderly.org/v1/batch-order",
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([
'orders' => [
[
'symbol' => '<string>',
'order_type' => '<string>',
'side' => '<string>',
'client_order_id' => '<string>',
'order_price' => 123,
'order_quantity' => 123,
'order_amount' => 123,
'reduce_only' => true,
'visible_quantity' => 123,
'order_tag' => 'enum:broker_b:GRID_PRO'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"orderly-account-id: <orderly-account-id>",
"orderly-key: <orderly-key>",
"orderly-signature: <orderly-signature>",
"orderly-timestamp: <orderly-timestamp>"
],
]);
$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.orderly.org/v1/batch-order"
payload := strings.NewReader("{\n \"orders\": [\n {\n \"symbol\": \"<string>\",\n \"order_type\": \"<string>\",\n \"side\": \"<string>\",\n \"client_order_id\": \"<string>\",\n \"order_price\": 123,\n \"order_quantity\": 123,\n \"order_amount\": 123,\n \"reduce_only\": true,\n \"visible_quantity\": 123,\n \"order_tag\": \"enum:broker_b:GRID_PRO\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("orderly-timestamp", "<orderly-timestamp>")
req.Header.Add("orderly-account-id", "<orderly-account-id>")
req.Header.Add("orderly-key", "<orderly-key>")
req.Header.Add("orderly-signature", "<orderly-signature>")
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.orderly.org/v1/batch-order")
.header("orderly-timestamp", "<orderly-timestamp>")
.header("orderly-account-id", "<orderly-account-id>")
.header("orderly-key", "<orderly-key>")
.header("orderly-signature", "<orderly-signature>")
.header("Content-Type", "application/json")
.body("{\n \"orders\": [\n {\n \"symbol\": \"<string>\",\n \"order_type\": \"<string>\",\n \"side\": \"<string>\",\n \"client_order_id\": \"<string>\",\n \"order_price\": 123,\n \"order_quantity\": 123,\n \"order_amount\": 123,\n \"reduce_only\": true,\n \"visible_quantity\": 123,\n \"order_tag\": \"enum:broker_b:GRID_PRO\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orderly.org/v1/batch-order")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["orderly-timestamp"] = '<orderly-timestamp>'
request["orderly-account-id"] = '<orderly-account-id>'
request["orderly-key"] = '<orderly-key>'
request["orderly-signature"] = '<orderly-signature>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"orders\": [\n {\n \"symbol\": \"<string>\",\n \"order_type\": \"<string>\",\n \"side\": \"<string>\",\n \"client_order_id\": \"<string>\",\n \"order_price\": 123,\n \"order_quantity\": 123,\n \"order_amount\": 123,\n \"reduce_only\": true,\n \"visible_quantity\": 123,\n \"order_tag\": \"enum:broker_b:GRID_PRO\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"rows": [
{
"order_id": 13,
"client_order_id": "testclientid",
"order_type": "LIMIT",
"order_price": 100.12,
"order_quantity": 0.987654,
"error_message": "none"
}
]
},
"timestamp": 1702989203989
}Headers
Timestamp of the signed request in milliseconds.
Account ID of the authenticated account.
Public orderly key used to sign the request.
Signature of the request payload generated with the orderly key.
Use this parameter to control the timeout threshold for placing order, unit in miliseconds
Body
Send order items in the orders array. Each item can include reduce_only: true to restrict it to reducing an existing position.
Show child attributes
Show child attributes