curl --request POST \
--url https://api.bravadotrade.com/v2/trade/order \
--header 'Content-Type: application/json' \
--data '
{
"symbol": "<string>",
"side": "buy",
"type": "LIMIT",
"venue": "polymarket",
"price": "<string>",
"size": "<string>",
"quote_amount": "<string>",
"time_in_force": "GTC",
"expiration": 123,
"condition_id": "<string>",
"outcome": "yes",
"offset_ticks": 123,
"budget_usdc": "<string>",
"price_floor": 123,
"price_ceiling": 123,
"execution": {
"duration_sec": 123,
"clip_size": "<string>",
"interval_sec": 123,
"randomize_pct": 123,
"passive": true,
"price_tolerance_pct": 123,
"trailing_offset_pct": 123,
"trailing_offset": "<string>",
"high_water_mark": "<string>",
"low_water_mark": "<string>",
"price_ceiling": "<string>"
},
"client_order_id": "<string>",
"metadata": "<string>"
}
'import requests
url = "https://api.bravadotrade.com/v2/trade/order"
payload = {
"symbol": "<string>",
"side": "buy",
"type": "LIMIT",
"venue": "polymarket",
"price": "<string>",
"size": "<string>",
"quote_amount": "<string>",
"time_in_force": "GTC",
"expiration": 123,
"condition_id": "<string>",
"outcome": "yes",
"offset_ticks": 123,
"budget_usdc": "<string>",
"price_floor": 123,
"price_ceiling": 123,
"execution": {
"duration_sec": 123,
"clip_size": "<string>",
"interval_sec": 123,
"randomize_pct": 123,
"passive": True,
"price_tolerance_pct": 123,
"trailing_offset_pct": 123,
"trailing_offset": "<string>",
"high_water_mark": "<string>",
"low_water_mark": "<string>",
"price_ceiling": "<string>"
},
"client_order_id": "<string>",
"metadata": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
symbol: '<string>',
side: 'buy',
type: 'LIMIT',
venue: 'polymarket',
price: '<string>',
size: '<string>',
quote_amount: '<string>',
time_in_force: 'GTC',
expiration: 123,
condition_id: '<string>',
outcome: 'yes',
offset_ticks: 123,
budget_usdc: '<string>',
price_floor: 123,
price_ceiling: 123,
execution: {
duration_sec: 123,
clip_size: '<string>',
interval_sec: 123,
randomize_pct: 123,
passive: true,
price_tolerance_pct: 123,
trailing_offset_pct: 123,
trailing_offset: '<string>',
high_water_mark: '<string>',
low_water_mark: '<string>',
price_ceiling: '<string>'
},
client_order_id: '<string>',
metadata: '<string>'
})
};
fetch('https://api.bravadotrade.com/v2/trade/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.bravadotrade.com/v2/trade/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([
'symbol' => '<string>',
'side' => 'buy',
'type' => 'LIMIT',
'venue' => 'polymarket',
'price' => '<string>',
'size' => '<string>',
'quote_amount' => '<string>',
'time_in_force' => 'GTC',
'expiration' => 123,
'condition_id' => '<string>',
'outcome' => 'yes',
'offset_ticks' => 123,
'budget_usdc' => '<string>',
'price_floor' => 123,
'price_ceiling' => 123,
'execution' => [
'duration_sec' => 123,
'clip_size' => '<string>',
'interval_sec' => 123,
'randomize_pct' => 123,
'passive' => true,
'price_tolerance_pct' => 123,
'trailing_offset_pct' => 123,
'trailing_offset' => '<string>',
'high_water_mark' => '<string>',
'low_water_mark' => '<string>',
'price_ceiling' => '<string>'
],
'client_order_id' => '<string>',
'metadata' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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 := "https://api.bravadotrade.com/v2/trade/order"
payload := strings.NewReader("{\n \"symbol\": \"<string>\",\n \"side\": \"buy\",\n \"type\": \"LIMIT\",\n \"venue\": \"polymarket\",\n \"price\": \"<string>\",\n \"size\": \"<string>\",\n \"quote_amount\": \"<string>\",\n \"time_in_force\": \"GTC\",\n \"expiration\": 123,\n \"condition_id\": \"<string>\",\n \"outcome\": \"yes\",\n \"offset_ticks\": 123,\n \"budget_usdc\": \"<string>\",\n \"price_floor\": 123,\n \"price_ceiling\": 123,\n \"execution\": {\n \"duration_sec\": 123,\n \"clip_size\": \"<string>\",\n \"interval_sec\": 123,\n \"randomize_pct\": 123,\n \"passive\": true,\n \"price_tolerance_pct\": 123,\n \"trailing_offset_pct\": 123,\n \"trailing_offset\": \"<string>\",\n \"high_water_mark\": \"<string>\",\n \"low_water_mark\": \"<string>\",\n \"price_ceiling\": \"<string>\"\n },\n \"client_order_id\": \"<string>\",\n \"metadata\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.bravadotrade.com/v2/trade/order")
.header("Content-Type", "application/json")
.body("{\n \"symbol\": \"<string>\",\n \"side\": \"buy\",\n \"type\": \"LIMIT\",\n \"venue\": \"polymarket\",\n \"price\": \"<string>\",\n \"size\": \"<string>\",\n \"quote_amount\": \"<string>\",\n \"time_in_force\": \"GTC\",\n \"expiration\": 123,\n \"condition_id\": \"<string>\",\n \"outcome\": \"yes\",\n \"offset_ticks\": 123,\n \"budget_usdc\": \"<string>\",\n \"price_floor\": 123,\n \"price_ceiling\": 123,\n \"execution\": {\n \"duration_sec\": 123,\n \"clip_size\": \"<string>\",\n \"interval_sec\": 123,\n \"randomize_pct\": 123,\n \"passive\": true,\n \"price_tolerance_pct\": 123,\n \"trailing_offset_pct\": 123,\n \"trailing_offset\": \"<string>\",\n \"high_water_mark\": \"<string>\",\n \"low_water_mark\": \"<string>\",\n \"price_ceiling\": \"<string>\"\n },\n \"client_order_id\": \"<string>\",\n \"metadata\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bravadotrade.com/v2/trade/order")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"symbol\": \"<string>\",\n \"side\": \"buy\",\n \"type\": \"LIMIT\",\n \"venue\": \"polymarket\",\n \"price\": \"<string>\",\n \"size\": \"<string>\",\n \"quote_amount\": \"<string>\",\n \"time_in_force\": \"GTC\",\n \"expiration\": 123,\n \"condition_id\": \"<string>\",\n \"outcome\": \"yes\",\n \"offset_ticks\": 123,\n \"budget_usdc\": \"<string>\",\n \"price_floor\": 123,\n \"price_ceiling\": 123,\n \"execution\": {\n \"duration_sec\": 123,\n \"clip_size\": \"<string>\",\n \"interval_sec\": 123,\n \"randomize_pct\": 123,\n \"passive\": true,\n \"price_tolerance_pct\": 123,\n \"trailing_offset_pct\": 123,\n \"trailing_offset\": \"<string>\",\n \"high_water_mark\": \"<string>\",\n \"low_water_mark\": \"<string>\",\n \"price_ceiling\": \"<string>\"\n },\n \"client_order_id\": \"<string>\",\n \"metadata\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"type": "<string>",
"order_id": "<string>",
"record_id": "<string>",
"status": "<string>",
"side": "<string>",
"price": "<string>",
"size": "<string>",
"filled_size": "<string>",
"remaining_size": "<string>",
"matched_amount": "<string>",
"builder_code_used": "<string>",
"created_at": 123,
"brackets": {
"take_profit": {
"order_id": "<string>",
"id": "<string>",
"status": "<string>",
"error": "<string>"
},
"stop_loss": {
"order_id": "<string>",
"id": "<string>",
"status": "<string>",
"error": "<string>"
}
},
"warnings": [
"<string>"
],
"message": "<string>"
}Place an order (consolidated)
Single high-level order endpoint. type = LIMIT | MARKET | PEGGED | TWAP | ICEBERG. Optional take_profit / stop_loss brackets attach to a LIMIT/MARKET buy entry (placed after the entry; best-effort — a failing bracket is reported, not rolled back). Idempotency-Key required.
curl --request POST \
--url https://api.bravadotrade.com/v2/trade/order \
--header 'Content-Type: application/json' \
--data '
{
"symbol": "<string>",
"side": "buy",
"type": "LIMIT",
"venue": "polymarket",
"price": "<string>",
"size": "<string>",
"quote_amount": "<string>",
"time_in_force": "GTC",
"expiration": 123,
"condition_id": "<string>",
"outcome": "yes",
"offset_ticks": 123,
"budget_usdc": "<string>",
"price_floor": 123,
"price_ceiling": 123,
"execution": {
"duration_sec": 123,
"clip_size": "<string>",
"interval_sec": 123,
"randomize_pct": 123,
"passive": true,
"price_tolerance_pct": 123,
"trailing_offset_pct": 123,
"trailing_offset": "<string>",
"high_water_mark": "<string>",
"low_water_mark": "<string>",
"price_ceiling": "<string>"
},
"client_order_id": "<string>",
"metadata": "<string>"
}
'import requests
url = "https://api.bravadotrade.com/v2/trade/order"
payload = {
"symbol": "<string>",
"side": "buy",
"type": "LIMIT",
"venue": "polymarket",
"price": "<string>",
"size": "<string>",
"quote_amount": "<string>",
"time_in_force": "GTC",
"expiration": 123,
"condition_id": "<string>",
"outcome": "yes",
"offset_ticks": 123,
"budget_usdc": "<string>",
"price_floor": 123,
"price_ceiling": 123,
"execution": {
"duration_sec": 123,
"clip_size": "<string>",
"interval_sec": 123,
"randomize_pct": 123,
"passive": True,
"price_tolerance_pct": 123,
"trailing_offset_pct": 123,
"trailing_offset": "<string>",
"high_water_mark": "<string>",
"low_water_mark": "<string>",
"price_ceiling": "<string>"
},
"client_order_id": "<string>",
"metadata": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
symbol: '<string>',
side: 'buy',
type: 'LIMIT',
venue: 'polymarket',
price: '<string>',
size: '<string>',
quote_amount: '<string>',
time_in_force: 'GTC',
expiration: 123,
condition_id: '<string>',
outcome: 'yes',
offset_ticks: 123,
budget_usdc: '<string>',
price_floor: 123,
price_ceiling: 123,
execution: {
duration_sec: 123,
clip_size: '<string>',
interval_sec: 123,
randomize_pct: 123,
passive: true,
price_tolerance_pct: 123,
trailing_offset_pct: 123,
trailing_offset: '<string>',
high_water_mark: '<string>',
low_water_mark: '<string>',
price_ceiling: '<string>'
},
client_order_id: '<string>',
metadata: '<string>'
})
};
fetch('https://api.bravadotrade.com/v2/trade/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.bravadotrade.com/v2/trade/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([
'symbol' => '<string>',
'side' => 'buy',
'type' => 'LIMIT',
'venue' => 'polymarket',
'price' => '<string>',
'size' => '<string>',
'quote_amount' => '<string>',
'time_in_force' => 'GTC',
'expiration' => 123,
'condition_id' => '<string>',
'outcome' => 'yes',
'offset_ticks' => 123,
'budget_usdc' => '<string>',
'price_floor' => 123,
'price_ceiling' => 123,
'execution' => [
'duration_sec' => 123,
'clip_size' => '<string>',
'interval_sec' => 123,
'randomize_pct' => 123,
'passive' => true,
'price_tolerance_pct' => 123,
'trailing_offset_pct' => 123,
'trailing_offset' => '<string>',
'high_water_mark' => '<string>',
'low_water_mark' => '<string>',
'price_ceiling' => '<string>'
],
'client_order_id' => '<string>',
'metadata' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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 := "https://api.bravadotrade.com/v2/trade/order"
payload := strings.NewReader("{\n \"symbol\": \"<string>\",\n \"side\": \"buy\",\n \"type\": \"LIMIT\",\n \"venue\": \"polymarket\",\n \"price\": \"<string>\",\n \"size\": \"<string>\",\n \"quote_amount\": \"<string>\",\n \"time_in_force\": \"GTC\",\n \"expiration\": 123,\n \"condition_id\": \"<string>\",\n \"outcome\": \"yes\",\n \"offset_ticks\": 123,\n \"budget_usdc\": \"<string>\",\n \"price_floor\": 123,\n \"price_ceiling\": 123,\n \"execution\": {\n \"duration_sec\": 123,\n \"clip_size\": \"<string>\",\n \"interval_sec\": 123,\n \"randomize_pct\": 123,\n \"passive\": true,\n \"price_tolerance_pct\": 123,\n \"trailing_offset_pct\": 123,\n \"trailing_offset\": \"<string>\",\n \"high_water_mark\": \"<string>\",\n \"low_water_mark\": \"<string>\",\n \"price_ceiling\": \"<string>\"\n },\n \"client_order_id\": \"<string>\",\n \"metadata\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.bravadotrade.com/v2/trade/order")
.header("Content-Type", "application/json")
.body("{\n \"symbol\": \"<string>\",\n \"side\": \"buy\",\n \"type\": \"LIMIT\",\n \"venue\": \"polymarket\",\n \"price\": \"<string>\",\n \"size\": \"<string>\",\n \"quote_amount\": \"<string>\",\n \"time_in_force\": \"GTC\",\n \"expiration\": 123,\n \"condition_id\": \"<string>\",\n \"outcome\": \"yes\",\n \"offset_ticks\": 123,\n \"budget_usdc\": \"<string>\",\n \"price_floor\": 123,\n \"price_ceiling\": 123,\n \"execution\": {\n \"duration_sec\": 123,\n \"clip_size\": \"<string>\",\n \"interval_sec\": 123,\n \"randomize_pct\": 123,\n \"passive\": true,\n \"price_tolerance_pct\": 123,\n \"trailing_offset_pct\": 123,\n \"trailing_offset\": \"<string>\",\n \"high_water_mark\": \"<string>\",\n \"low_water_mark\": \"<string>\",\n \"price_ceiling\": \"<string>\"\n },\n \"client_order_id\": \"<string>\",\n \"metadata\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bravadotrade.com/v2/trade/order")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"symbol\": \"<string>\",\n \"side\": \"buy\",\n \"type\": \"LIMIT\",\n \"venue\": \"polymarket\",\n \"price\": \"<string>\",\n \"size\": \"<string>\",\n \"quote_amount\": \"<string>\",\n \"time_in_force\": \"GTC\",\n \"expiration\": 123,\n \"condition_id\": \"<string>\",\n \"outcome\": \"yes\",\n \"offset_ticks\": 123,\n \"budget_usdc\": \"<string>\",\n \"price_floor\": 123,\n \"price_ceiling\": 123,\n \"execution\": {\n \"duration_sec\": 123,\n \"clip_size\": \"<string>\",\n \"interval_sec\": 123,\n \"randomize_pct\": 123,\n \"passive\": true,\n \"price_tolerance_pct\": 123,\n \"trailing_offset_pct\": 123,\n \"trailing_offset\": \"<string>\",\n \"high_water_mark\": \"<string>\",\n \"low_water_mark\": \"<string>\",\n \"price_ceiling\": \"<string>\"\n },\n \"client_order_id\": \"<string>\",\n \"metadata\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"type": "<string>",
"order_id": "<string>",
"record_id": "<string>",
"status": "<string>",
"side": "<string>",
"price": "<string>",
"size": "<string>",
"filled_size": "<string>",
"remaining_size": "<string>",
"matched_amount": "<string>",
"builder_code_used": "<string>",
"created_at": 123,
"brackets": {
"take_profit": {
"order_id": "<string>",
"id": "<string>",
"status": "<string>",
"error": "<string>"
},
"stop_loss": {
"order_id": "<string>",
"id": "<string>",
"status": "<string>",
"error": "<string>"
}
},
"warnings": [
"<string>"
],
"message": "<string>"
}Body
Venue-native outcome token id
buy LIMIT Trading venue. Omitted = polymarket (backward compatible). predictfun requires the partner venue entitlement; LIMIT and MARKET only for now.
polymarket Decimal probability 0..1, e.g. "0.72" for 72¢ (NOT cents). Required for LIMIT / ICEBERG / TAKE_PROFIT / STOP_LOSS. Optional for TWAP (derived from the live top of book when omitted) and TRAILING_STOP (reference; execution.high_water_mark also works).
Shares. Required for LIMIT / ICEBERG / TAKE_PROFIT / STOP_LOSS / TRAILING_STOP and MARKET sell; for TWAP either size or quote_amount works.
US dollars. MARKET buy notional; TWAP: shares are derived from it at the limit price; PEGGED: accepted as an alias for budget_usdc.
LIMIT only. GTC (default) rests on the book (GTD when expiration is set). IOC fills whatever crosses immediately and cancels the remainder (Polymarket FAK) — the response reports the actual filled_size. FOK fills the full size instantly or cancels entirely. Incompatible with expiration. MARKET orders always behave as IOC/FAK.
GTC yes PEGGED: distance from the touch in CLOB ticks (1 tick = $0.001); 0 = passive at the touch.
PEGGED buy budget in US dollars, top-level decimal string, e.g. "50". quote_amount is accepted as an alias.
PEGGED: lowest chase price, decimal probability 0..1 (NOT cents).
PEGGED: highest chase price, decimal probability 0..1 (NOT cents).
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Response
Default Response
Show child attributes
Show child attributes