1. 11. Spot Trading API
MIN-Global API
  • MinGlobal External API (v1)
    • 01. Overview and Quick Start
      • Step 1. Check API Reachability (no key needed)
      • Step 2. Your First Signed Request
    • 02. Authentication and Request Signing
    • 03. Spot Trading Explained
    • 04. Futures Trading Explained
    • 05. Data Formats and Conventions
    • 06. Errors and Troubleshooting
    • 07. Rate Limits, Permissions and Known Limits
    • 08. Market Data API (public, no key needed)
      • List Spot Trading Pairs
      • Get All Spot Tickers
      • Get Spot Candlesticks (Klines)
      • Get Spot Order Book (Depth)
      • Get Recent Spot Trades
      • List Futures Contracts
      • Get All Futures Tickers
      • Get Futures Candlesticks (Klines)
      • Get Futures Order Book (Depth)
      • Get Recent Futures Trades
    • 09. Wallets and Balances API
      • Get All Balances
      • Get Balances by Coin
    • 10. Assets and Networks API
      • List Supported Coins
      • List Networks for a Coin
    • 11. Spot Trading API
      • Place Spot Order (Limit Buy)
        POST
      • Place Spot Order (Market Sell)
        POST
      • List Your Spot Orders
        GET
      • Get One Spot Order
        GET
      • Cancel Spot Order
        DELETE
    • 12. Futures Trading API
      • Get Futures Margin Balance
      • Open Futures Position (Limit Long)
      • Close Futures Position (Reduce Only)
      • List Open Futures Orders
      • Get Futures Order History
      • Get One Futures Order
      • Cancel Futures Order
  1. 11. Spot Trading API

Place Spot Order (Limit Buy)

POST
https://api.minglobal.io/v1/orders
Places a spot order. Funds are reserved immediately. Submission to the venue happens separately.
Permission: SPOT_TRADE | Success: 201 Created

Request body#

The schema is strict. Any key it does not recognize rejects the whole request.
FieldTypeRequiredNotes
symbolstringYesBASE-QUOTE, 2 to 15 alphanumerics each side. Lowercase is accepted and uppercased
sidestringYesBUY or SELL
typestringYesMARKET or LIMIT
quantitydecimal stringYesGreater than 0. Up to 20 integer and 18 fractional digits. No sign, no exponent
pricedecimal stringConditionalRequired for LIMIT. Must be left out for MARKET. Sending it is a rejection, not an ignore
There is no clientOrderId input. The server mints one for you.

What gets reserved#

A BUY reserves the quote coin (quantity x price, plus a slippage buffer on MARKET). A SELL reserves the base coin. reservedAsset tells you which. Fees are not part of the reserve, so leave headroom. If funds are short, nothing at all is written and you get 409.

Reading the response#

201 does not mean the market accepted your order#

It means we accepted it and set your money aside. The venue's verdict comes later, and a rejection is not an HTTP error. Branch on the status field in the body, never on the HTTP status code.
PENDING_SUBMIT and SUBMITTED are in flight. FILLED, CANCELED, EXPIRED and REJECTED are final. UNKNOWN means the venue did not answer, your funds are still reserved, and you must poll rather than re-place.
The field you send is type. The field you get back is orderType. They are not the same name. timeInForce comes back as "GTC" on LIMIT and null on MARKET, and price is null on MARKET.

Errors#

StatuscodeCause
400VALIDATION_ERRORSchema failure, an instrument limit breach, or a missing Idempotency-Key
409INSUFFICIENT_BALANCENot enough spendable balance to reserve. Nothing was written
409IDEMPOTENCY_IN_PROGRESSAn earlier request with this key is still running
429TOO_MANY_OPEN_ORDERS200 orders already open on this symbol. Retrying will not help, so cancel one
429RATE_LIMIT_EXCEEDEDPer-key rate limit
403API_PERMISSION_DENIEDThe key lacks SPOT_TRADE
Instrument limit failures arrive as 400 VALIDATION_ERROR, and the message usually suggests a corrected value, for example price must be a multiple of tickSize (0.01), try 60000.00.

Request

Header Params

Body Params application/json

Example
{
  "symbol": "BTC-USDT",
  "side": "BUY",
  "type": "LIMIT",
  "quantity": "0.001",
  "price": "60000"
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location 'https://api.minglobal.io/v1/orders' \
--header 'X-MG-API-KEY: {{api_key}}' \
--header 'X-MG-TIMESTAMP: <set automatically at send time>' \
--header 'X-MG-RECV-WINDOW: {{recv_window}}' \
--header 'X-MG-SIGNATURE: <set automatically at send time>' \
--header 'Origin: {{origin}}' \
--header 'Idempotency-Key: <set automatically at send time>' \
--header 'Content-Type: application/json' \
--data '{
  "symbol": "BTC-USDT",
  "side": "BUY",
  "type": "LIMIT",
  "quantity": "0.001",
  "price": "60000"
}'

Responses

🟢201
application/json
Bodyapplication/json

Example
{
  "id": "clw8n2k4x0003abcdefghij",
  "userId": "clw8n1a2b0000abcdefghij",
  "clientOrderId": "prod_8n1a2b0000ab_9f3c2a",
  "venueOrderId": "1234567890",
  "symbol": "BTC-USDT",
  "marketType": "SPOT",
  "side": "BUY",
  "orderType": "LIMIT",
  "timeInForce": "GTC",
  "price": "60000",
  "quantity": "0.001",
  "filledQty": "0",
  "avgPrice": null,
  "reservedAmount": "60",
  "reservedAsset": "USDT",
  "reservedConsumed": "0",
  "status": "SUBMITTED",
  "reduceOnly": false,
  "submittedAt": "2026-08-18T09:20:43.100Z",
  "terminalAt": null,
  "createdAt": "2026-08-18T09:20:43.000Z",
  "updatedAt": "2026-08-18T09:20:43.100Z"
}
🟠400
🟠409
Modified at 2026-09-02 09:50:41
Previous
11. Spot Trading API
Next
Place Spot Order (Market Sell)
Built with