Skip to main content
POST
/
public
/
v1
/
orders
Place Order
curl --request POST \
  --url https://api.pro.daya.co/public/v1/orders \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: <x-api-key>' \
  --data '
{
  "symbol": "<string>",
  "side": "<string>",
  "type": "<string>",
  "price": "<string>",
  "quantity": "<string>"
}
'
{
  "success": true,
  "message": "Order placed successfully",
  "data": {
    "order_id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "pending_settlement",
    "side": "buy",
    "type": "limit",
    "symbol": "USD-NGN",
    "requested_quantity": "100.00000000",
    "filled_quantity": "0.00000000",
    "remaining_quantity": "100.00000000",
    "avg_fill_price": "",
    "total_fee_charged": "",
    "created_at": "2024-01-15T10:35:00Z",
    "updated_at": "2024-01-15T10:35:00Z"
  },
  "timestamp": "2024-01-15T10:35:00Z"
}

Overview

Place a new limit or market order on the Pro platform. This endpoint requires authentication with an API key that has Trade scope.

Authentication

X-Api-Key
string
required
Your API key with Trade scope
X-Api-Key: daya_sk_YOUR_API_KEY

Request Body

symbol
string
required
Trading pair symbol. All symbols map to a unified USD balance.Example: USDT-NGN (recommended)Allowed values: USDT-NGN, USDC-NGN, USD-NGN
side
string
required
Order sideAllowed values: buy, sell
type
string
required
Order typeAllowed values: limit, market
price
string
Order price (required for limit orders)Example: 1545.00
Required when type is limit. Not allowed for market orders.
quantity
string
required
Order quantity in base assetExample: 100.00

Request Examples

{
  "symbol": "USDT-NGN",
  "side": "buy",
  "type": "limit",
  "price": "1545.00",
  "quantity": "100.00"
}

Response

success
boolean
required
Indicates if the request was successful
message
string
required
Human-readable response message
data
object
required
Order placement response
timestamp
string
ISO 8601 timestamp of the response

Success Response

{
  "success": true,
  "message": "Order placed successfully",
  "data": {
    "order_id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "pending_settlement",
    "side": "buy",
    "type": "limit",
    "symbol": "USD-NGN",
    "requested_quantity": "100.00000000",
    "filled_quantity": "0.00000000",
    "remaining_quantity": "100.00000000",
    "avg_fill_price": "",
    "total_fee_charged": "",
    "created_at": "2024-01-15T10:35:00Z",
    "updated_at": "2024-01-15T10:35:00Z"
  },
  "timestamp": "2024-01-15T10:35:00Z"
}

Error Responses

{
  "success": false,
  "message": "Insufficient balance",
  "error": {
    "code": "INSUFFICIENT_BALANCE",
    "message": "Insufficient balance to place this order"
  },
  "timestamp": "2024-01-15T10:35:00Z"
}

Order Types

TypeDescriptionRequired Fields
limitExecute at specified price or betterprice, quantity
marketExecute immediately at best available pricequantity

Limit Orders

Limit orders are placed on the orderbook and wait for a matching order:
  • Buy limit: Executes at the specified price or lower
  • Sell limit: Executes at the specified price or higher
  • Remains open until filled or cancelled

Market Orders

Market orders execute immediately at the best available price:
  • May experience slippage if orderbook depth is low
  • Partially fills if insufficient liquidity

Order Status Flow

pending_settlement → new → open → partially_filled → filled
                           ↓                          ↓
                      cancelled                  cancelled

                        failed
StatusDescription
pending_settlementOrder is awaiting settlement
newOrder has been created
openOrder is active on the orderbook
partially_filledOrder is partially executed
filledOrder is completely executed
cancelledOrder was cancelled by user
rejectedOrder was rejected by the system
failedOrder failed to execute

Rate Limits

  • 100 requests per minute per API key

Next Steps

List Orders

View your open orders

Cancel Order

Cancel an open order