curl --request POST \
--url https://api.bullionwale.com/api/trading/test/v1/limit-orders \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '
{
"client_order_id": "bot-limit-7",
"quantity": 10,
"symbol_code": "GOLD_TRADE_999",
"trade_type": "buy",
"trigger_price": 140500
}
'import requests
url = "https://api.bullionwale.com/api/trading/test/v1/limit-orders"
payload = {
"client_order_id": "bot-limit-7",
"quantity": 10,
"symbol_code": "GOLD_TRADE_999",
"trade_type": "buy",
"trigger_price": 140500
}
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){
"actions": [
"<string>"
],
"id": "<string>",
"quantity": "<string>",
"status": "<string>",
"status_detail": "<string>",
"symbol_code": "<string>",
"total": "<string>",
"trade_type": "<string>",
"trigger_price": "<string>",
"unit": "<string>",
"cancel_reason": "<string>",
"client_order_id": "<string>",
"created_at": "<string>",
"environment": "test",
"order_id": "<string>"
}{
"actions": [
"edit",
"cancel"
],
"client_order_id": "bot-limit-7",
"created_at": "2026-10-21T09:31:05.120000+00:00",
"environment": "test",
"id": "5c9e2a71-0b3f-4d8e-a6c2-9f1e7d3b4a60",
"quantity": "10",
"status": "pending",
"status_detail": "pending",
"symbol_code": "GOLD_TRADE_999",
"total": "140500.00",
"trade_type": "buy",
"trigger_price": "140500.00",
"unit": "g"
}{
"detail": {
"code": "limit_would_execute",
"message": "A buy limit has to be BELOW the current price of 141,250.00 — at 141,500.00 it would execute immediately. Lower the limit, or use Buy to trade at the market price now."
}
}{
"detail": {
"code": "<string>",
"message": "<string>"
}
}{
"detail": {
"code": "<string>",
"message": "<string>"
}
}{
"detail": {
"code": "<string>",
"message": "<string>"
}
}{
"detail": {
"code": "<string>",
"message": "<string>"
}
}{
"detail": {
"code": "<string>",
"message": "<string>"
}
}{
"detail": {
"code": "<string>",
"message": "<string>"
}
}Place a simulated limit order (test)
Available on request. Ask the Bullionwale desk to turn on API access for your account and issue a test key. Test orders are simulated; nothing is booked.
A SIMULATED limit order: the same checks as a real one, nothing reaches the desk, and it never triggers: it rests until you cancel it. Idempotency-Key is required (1-64 characters). 201 on first placement; 200 with Idempotent-Replayed: true on a replay of the same key and body.
curl --request POST \
--url https://api.bullionwale.com/api/trading/test/v1/limit-orders \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '
{
"client_order_id": "bot-limit-7",
"quantity": 10,
"symbol_code": "GOLD_TRADE_999",
"trade_type": "buy",
"trigger_price": 140500
}
'import requests
url = "https://api.bullionwale.com/api/trading/test/v1/limit-orders"
payload = {
"client_order_id": "bot-limit-7",
"quantity": 10,
"symbol_code": "GOLD_TRADE_999",
"trade_type": "buy",
"trigger_price": 140500
}
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){
"actions": [
"<string>"
],
"id": "<string>",
"quantity": "<string>",
"status": "<string>",
"status_detail": "<string>",
"symbol_code": "<string>",
"total": "<string>",
"trade_type": "<string>",
"trigger_price": "<string>",
"unit": "<string>",
"cancel_reason": "<string>",
"client_order_id": "<string>",
"created_at": "<string>",
"environment": "test",
"order_id": "<string>"
}{
"actions": [
"edit",
"cancel"
],
"client_order_id": "bot-limit-7",
"created_at": "2026-10-21T09:31:05.120000+00:00",
"environment": "test",
"id": "5c9e2a71-0b3f-4d8e-a6c2-9f1e7d3b4a60",
"quantity": "10",
"status": "pending",
"status_detail": "pending",
"symbol_code": "GOLD_TRADE_999",
"total": "140500.00",
"trade_type": "buy",
"trigger_price": "140500.00",
"unit": "g"
}{
"detail": {
"code": "limit_would_execute",
"message": "A buy limit has to be BELOW the current price of 141,250.00 — at 141,500.00 it would execute immediately. Lower the limit, or use Buy to trade at the market price now."
}
}{
"detail": {
"code": "<string>",
"message": "<string>"
}
}{
"detail": {
"code": "<string>",
"message": "<string>"
}
}{
"detail": {
"code": "<string>",
"message": "<string>"
}
}{
"detail": {
"code": "<string>",
"message": "<string>"
}
}{
"detail": {
"code": "<string>",
"message": "<string>"
}
}{
"detail": {
"code": "<string>",
"message": "<string>"
}
}Authorizations
Headers
Required, 1-64 characters. Per account: the same key with the same body replays the order.
64Body
A weight in the symbol's measure (grams or kilograms), at most 4 decimal places.
x <= 100000032buy or sell.
Rupees per the symbol's quoted measure. A buy limit must be below the current buy price, a sell limit above the current sell price.
x <= 10000000064Response
Replay of an earlier request with the same key and body.
edit and cancel while pending; else empty.
pending or cancelled (a test limit never triggers).
The raw status; branch on status.
The order's value at the trigger price, in rupees.
Rupees, 2 decimals, as a string.
g or kg.
The market order a triggered limit became (see GET /orders); otherwise null.