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>"
}
'import requests
url = "https://api.pro.daya.co/public/v1/orders"
payload = {
"symbol": "<string>",
"side": "<string>",
"type": "<string>",
"price": "<string>",
"quantity": "<string>"
}
headers = {
"X-Api-Key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
symbol: '<string>',
side: '<string>',
type: '<string>',
price: '<string>',
quantity: '<string>'
})
};
fetch('https://api.pro.daya.co/public/v1/orders', 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.pro.daya.co/public/v1/orders",
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' => '<string>',
'type' => '<string>',
'price' => '<string>',
'quantity' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <x-api-key>"
],
]);
$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.pro.daya.co/public/v1/orders"
payload := strings.NewReader("{\n \"symbol\": \"<string>\",\n \"side\": \"<string>\",\n \"type\": \"<string>\",\n \"price\": \"<string>\",\n \"quantity\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<x-api-key>")
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.pro.daya.co/public/v1/orders")
.header("X-Api-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"symbol\": \"<string>\",\n \"side\": \"<string>\",\n \"type\": \"<string>\",\n \"price\": \"<string>\",\n \"quantity\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pro.daya.co/public/v1/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"symbol\": \"<string>\",\n \"side\": \"<string>\",\n \"type\": \"<string>\",\n \"price\": \"<string>\",\n \"quantity\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"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"
}
{
"success": true,
"message": "Order placed successfully",
"data": {
"order_id": "550e8400-e29b-41d4-a716-446655440001",
"status": "filled",
"side": "buy",
"type": "market",
"symbol": "USD-NGN",
"requested_quantity": "100.00000000",
"filled_quantity": "100.00000000",
"remaining_quantity": "0.00000000",
"avg_fill_price": "1545.50",
"total_fee_charged": "0.15455000",
"created_at": "2024-01-15T10:35:00Z",
"updated_at": "2024-01-15T10:35:01Z"
},
"timestamp": "2024-01-15T10:35:01Z"
}
Orders
Place Order
Place a new order on the Pro platform
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>"
}
'import requests
url = "https://api.pro.daya.co/public/v1/orders"
payload = {
"symbol": "<string>",
"side": "<string>",
"type": "<string>",
"price": "<string>",
"quantity": "<string>"
}
headers = {
"X-Api-Key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
symbol: '<string>',
side: '<string>',
type: '<string>',
price: '<string>',
quantity: '<string>'
})
};
fetch('https://api.pro.daya.co/public/v1/orders', 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.pro.daya.co/public/v1/orders",
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' => '<string>',
'type' => '<string>',
'price' => '<string>',
'quantity' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <x-api-key>"
],
]);
$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.pro.daya.co/public/v1/orders"
payload := strings.NewReader("{\n \"symbol\": \"<string>\",\n \"side\": \"<string>\",\n \"type\": \"<string>\",\n \"price\": \"<string>\",\n \"quantity\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<x-api-key>")
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.pro.daya.co/public/v1/orders")
.header("X-Api-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"symbol\": \"<string>\",\n \"side\": \"<string>\",\n \"type\": \"<string>\",\n \"price\": \"<string>\",\n \"quantity\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pro.daya.co/public/v1/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"symbol\": \"<string>\",\n \"side\": \"<string>\",\n \"type\": \"<string>\",\n \"price\": \"<string>\",\n \"quantity\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"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"
}
{
"success": true,
"message": "Order placed successfully",
"data": {
"order_id": "550e8400-e29b-41d4-a716-446655440001",
"status": "filled",
"side": "buy",
"type": "market",
"symbol": "USD-NGN",
"requested_quantity": "100.00000000",
"filled_quantity": "100.00000000",
"remaining_quantity": "0.00000000",
"avg_fill_price": "1545.50",
"total_fee_charged": "0.15455000",
"created_at": "2024-01-15T10:35:00Z",
"updated_at": "2024-01-15T10:35:01Z"
},
"timestamp": "2024-01-15T10:35:01Z"
}
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
Your API key with Trade scope
X-Api-Key: daya_sk_YOUR_API_KEY
Request Body
Trading pair symbol. All symbols map to a unified USD balance.Example:
USDT-NGN (recommended)Allowed values: USDT-NGN, USDC-NGN, USD-NGNOrder sideAllowed values:
buy, sellOrder typeAllowed values:
limit, marketOrder price (required for limit orders)Example:
1545.00Required when
type is limit. Not allowed for market orders.Order quantity in base assetExample:
100.00Request Examples
{
"symbol": "USDT-NGN",
"side": "buy",
"type": "limit",
"price": "1545.00",
"quantity": "100.00"
}
{
"symbol": "USDT-NGN",
"side": "buy",
"type": "market",
"quantity": "100.00"
}
curl --request POST \
--url https://api.pro.daya.co/public/v1/orders \
--header 'X-Api-Key: daya_sk_YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"symbol": "USDT-NGN",
"side": "buy",
"type": "limit",
"price": "1545.00",
"quantity": "100.00"
}'
const response = await fetch('https://api.pro.daya.co/public/v1/orders', {
method: 'POST',
headers: {
'X-Api-Key': 'daya_sk_YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
symbol: 'USDT-NGN',
side: 'buy',
type: 'limit',
price: '1545.00',
quantity: '100.00'
})
});
const order = await response.json();
console.log('Order placed:', order.data.order_id);
import requests
headers = {
'X-Api-Key': 'daya_sk_YOUR_API_KEY',
'Content-Type': 'application/json'
}
data = {
'symbol': 'USDT-NGN',
'side': 'buy',
'type': 'limit',
'price': '1545.00',
'quantity': '100.00'
}
response = requests.post(
'https://api.pro.daya.co/public/v1/orders',
headers=headers,
json=data
)
order = response.json()
print(f"Order placed: {order['data']['order_id']}")
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
order := map[string]string{
"symbol": "USDT-NGN",
"side": "buy",
"type": "limit",
"price": "1545.00",
"quantity": "100.00",
}
body, _ := json.Marshal(order)
req, _ := http.NewRequest("POST", "https://api.pro.daya.co/public/v1/orders", bytes.NewBuffer(body))
req.Header.Set("X-Api-Key", "daya_sk_YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
data := result["data"].(map[string]interface{})
fmt.Println("Order placed:", data["order_id"])
}
Response
Indicates if the request was successful
Human-readable response message
Order placement response
Show data properties
Show data properties
Unique order identifier (UUID)Example:
550e8400-e29b-41d4-a716-446655440000Initial order statusValues:
pending_settlement, new, openOrder side:
buy or sellOrder type:
limit or marketTrading pair symbol
Requested order quantity
Quantity filled so far
Remaining quantity to fill
Average fill price (empty if no fills yet)
Total fees charged (empty if no fills yet)
ISO 8601 creation timestamp
ISO 8601 last update timestamp
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"
}
{
"success": true,
"message": "Order placed successfully",
"data": {
"order_id": "550e8400-e29b-41d4-a716-446655440001",
"status": "filled",
"side": "buy",
"type": "market",
"symbol": "USD-NGN",
"requested_quantity": "100.00000000",
"filled_quantity": "100.00000000",
"remaining_quantity": "0.00000000",
"avg_fill_price": "1545.50",
"total_fee_charged": "0.15455000",
"created_at": "2024-01-15T10:35:00Z",
"updated_at": "2024-01-15T10:35:01Z"
},
"timestamp": "2024-01-15T10:35:01Z"
}
Error Responses
{
"success": false,
"message": "Insufficient balance",
"error": {
"code": "INSUFFICIENT_BALANCE",
"message": "Insufficient balance to place this order"
},
"timestamp": "2024-01-15T10:35:00Z"
}
{
"success": false,
"message": "Invalid order",
"error": {
"code": "INVALID_ORDER",
"message": "Price is required for limit orders"
},
"timestamp": "2024-01-15T10:35:00Z"
}
{
"success": false,
"message": "Forbidden",
"error": {
"code": "API_KEY_INVALID_SCOPE",
"message": "API key does not have the required Trade scope"
},
"timestamp": "2024-01-15T10:35:00Z"
}
{
"success": false,
"message": "Symbol not found",
"error": {
"code": "SYMBOL_NOT_FOUND",
"message": "The specified trading pair does not exist"
},
"timestamp": "2024-01-15T10:35:00Z"
}
Order Types
| Type | Description | Required Fields |
|---|---|---|
| limit | Execute at specified price or better | price, quantity |
| market | Execute immediately at best available price | quantity |
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
| Status | Description |
|---|---|
pending_settlement | Order is awaiting settlement |
new | Order has been created |
open | Order is active on the orderbook |
partially_filled | Order is partially executed |
filled | Order is completely executed |
cancelled | Order was cancelled by user |
rejected | Order was rejected by the system |
failed | Order 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
⌘I