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>",
"blocked_reason": "<string>",
"cancel_reason": "<string>",
"client_order_id": "<string>",
"created_at": "<string>",
"environment": "production",
"order_id": "<string>",
"source": "<string>"
}Place a limit order
Test (/api/trading/test/v1): 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.
Production (/api/trading/v1): Switched off. Production trading is implemented but not available: orders are refused with 403 production_trading_disabled. Once it opens, Bullionwale enables production access per account (see Production access requirements).
In test: 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.
In production: A REAL resting limit order: it executes as a market order when the price reaches trigger_price, if your weight allocation still has room then. Idempotency-Key is required (1-64 characters) and is per ACCOUNT. 201 = pending; 202 = confirming (the hedge is confirming it: poll GET /limit-orders/{limit_order_id}); 200 + Idempotent-Replayed: true = replay of the same key and body; 409 limit_order_rejected = it was not placed (a replay answers 409 again). If the placement fails after submission the answer is what was committed, or 503 booking_not_completed / booking_outcome_unknown: retry with the same key.
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>",
"blocked_reason": "<string>",
"cancel_reason": "<string>",
"client_order_id": "<string>",
"created_at": "<string>",
"environment": "production",
"order_id": "<string>",
"source": "<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.
- ProductionLimitOrder
- TestLimitOrder
edit and cancel while pending; else empty.
pending, confirming, triggered or cancelled.
The desk's raw status: placing / cancelling read confirming.
The order's value at the trigger price, in rupees.
Rupees, 2 decimals, as a string.
g or kg.
Why it would not execute if its price were reached now, or that it is confirming.
The market order a triggered limit became (see GET /orders); otherwise null.
api when placed through this API; null when placed in the app or on the web.