लोड हो रहा है…
लोड हो रहा है…
लोड हो रहा है…
डेवलपर
पब्लिक बीटाअपने प्रोग्राम से Croleo पर ट्रेड करें। मार्केट डेटा सार्वजनिक है; ऑर्डर, बैलेंस और फ़िल के लिए API कुंजी और साइन किया अनुरोध चाहिए। केवल स्पॉट। API कुंजियाँ कभी निकासी नहीं कर सकतीं।
टेस्ट फ़ंड के साथ पब्लिक बीटा
BASE-QUOTE रूप में होते हैं, जैसे BTC-USDT या ETH-USDC।Content-Type: application/json के साथ भेजें।ऑर्डर, बैलेंस और फ़िल के लिए API कुंजी चाहिए। इसे खाता, API कुंजियाँ में बनाएँ: वे IP पते लिखें जिनसे इसे इस्तेमाल किया जा सकता है, अपनी पासकी से पुष्टि करें और सीक्रेट कॉपी करें, जो सिर्फ़ एक बार दिखता है। यह भी देखें: API कुंजियाँ कैसे काम करती हैं।
timestamp + "\n" + METHOD + "\n" + path?query + "\n" + body बनाएँ: टाइमस्टैम्प, बड़े अक्षरों में मेथड, क्वेरी स्ट्रिंग समेत path ठीक वैसा ही जैसा आप भेजते हैं, और कच्ची बॉडी (GET के लिए खाली), नई लाइनों (\n) से जोड़कर।1793323476006
GET
/api/orders/history?market=BTC-USDT&limit=50
1793323476006
POST
/api/orders
{"market":"BTC-USDT","side":"buy","price":"50000.00","quantity":"0.0010"}stale_timestamp। अपनी घड़ी सिंक रखें।invalid_signature।replayed_request। हर अनुरोध पर एक बार, उसके अपने टाइमस्टैम्प के साथ साइन करें।ip_not_allowed।key_not_allowed। कुंजी वाला अनुरोध कभी ब्राउज़र सेशन पर नहीं लौटता।हर उदाहरण एनवायरनमेंट से CROLEO_KEY और CROLEO_SECRET (और कहीं और भेजने के लिए CROLEO_BASE) पढ़ता है और आपके बैलेंस दिखाता है। टिप्पणी वाली आखिरी लाइन लिमिट ऑर्डर लगाती है।
#!/usr/bin/env bash
# Needs bash, curl and openssl.
# Run: CROLEO_KEY=ck_... CROLEO_SECRET=... bash croleo.sh
BASE=https://croleo.com
[ -n "$CROLEO_BASE" ] && BASE=$CROLEO_BASE
croleo() {
method=$1 path=$2 body=$3
ts=$(date +%s%3N) # Unix ms (GNU date)
case $ts in *N) ts=$(($(date +%s) * 1000)) ;; esac # macOS date: seconds * 1000
sig=$(printf '%s\n%s\n%s\n%s' "$ts" "$method" "$path" "$body" |
openssl dgst -sha256 -hmac "$CROLEO_SECRET" | awk '{print $NF}')
set -- -sS -X "$method" "$BASE$path" \
-H "X-Croleo-Key: $CROLEO_KEY" \
-H "X-Croleo-Timestamp: $ts" \
-H "X-Croleo-Signature: $sig"
[ -n "$body" ] && set -- "$@" -H "Content-Type: application/json" --data-raw "$body"
curl "$@"
echo
}
croleo GET /api/balances
# croleo POST /api/orders '{"market":"BTC-USDT","side":"buy","price":"50000.00","quantity":"0.0010"}'कुंजी आपके खाते की ओर से काम करती है, लेकिन सिर्फ़ इन एंडपॉइंट के ज़रिए। हर कुंजी की पहुँच एक जैसी है: चुनने के लिए कोई स्कोप नहीं।
कुंजियाँ कभी निकासी नहीं कर सकतीं और न आपका खाता बदल सकती हैं
निकासी, डिपॉज़िट पते, सहेजे गए पते, पासकी, सेशन, API कुंजियाँ और खाते की हर दूसरी सेटिंग पहुँच से बाहर हैं। इन्हें कॉल करने वाली कुंजी को 403 key_not_allowed मिलता है।
खाता, API कुंजियाँ में कुंजी रद्द करते ही वह तुरंत बंद हो जाती है। खाता रिकवर करने पर हर कुंजी रद्द हो जाती है।
429 rate_limited मिलता है, बॉडी में retryAfter और Retry-After हेडर के साथ, दोनों सेकंड में।429 too_many_streams मिलता है।maxOpenOrders); एक और ऑर्डर को 409 too_many_open_orders मिलता है।{ "error": "rate_limited", "retryAfter": 3 }त्रुटियाँ HTTP स्टेटस और एक JSON बॉडी देती हैं जिसमें मिलान के लिए एक स्थिर कोड होता है।
{ "error": "insufficient_funds" }सार्वजनिक: न कुंजी चाहिए, न सिग्नेचर। ये अनुरोध X-Croleo हेडर के बिना भेजें।
GET/api/markets
हर एसेट उसके दशमलव के साथ, और हर मार्केट उसके स्टेटस (trading, halted या delisted), tick (कीमत का कदम), lot (मात्रा का कदम), सीमाओं, बेसिस पॉइंट में मेकर और टेकर फ़ीस और प्राइस बैंड के साथ।
कोई पैरामीटर नहीं।
{
"assets": [{ "code": "BTC", "decimals": 8 }, { "code": "USDT", "decimals": 6 }],
"markets": [
{
"symbol": "BTC-USDT",
"base": "BTC",
"quote": "USDT",
"status": "trading",
"tick": "0.01",
"lot": "0.0001",
"minQuantity": "0.0001",
"maxQuantity": "100.0000",
"maxPrice": "10000000.00",
"maxOpenOrders": 200,
"makerFeeBps": 10,
"takerFeeBps": 20,
"priceBandBps": 500
}
]
}GET/api/markets/{symbol}/book
हर तरफ़ ऊपर के 50 कीमत स्तर, सबसे अच्छे पहले, [कीमत, मात्रा] जोड़ों के रूप में। लाइव बदलावों के लिए मार्केट स्ट्रीम इस्तेमाल करें।
{
"symbol": "BTC-USDT",
"bids": [["77209.22", "0.0037"], ["77070.49", "0.0042"]],
"asks": [["77487.43", "0.0042"], ["77626.91", "0.0053"]]
}GET/api/markets/{symbol}/trades
सबसे नए ट्रेड, नए पहले, ज़्यादा से ज़्यादा 100। side टेकर की तरफ़ है।
{
"symbol": "BTC-USDT",
"trades": [
{
"id": 13,
"price": "77284.47",
"quantity": "0.0005",
"side": "buy",
"time": 1793320210895
},
{
"id": 12,
"price": "77191.84",
"quantity": "0.0025",
"side": "buy",
"time": 1793320210895
}
]
}GET/api/markets/{symbol}/candles
कैंडल, पुराने पहले; time अवधि की शुरुआत है। बिना ट्रेड वाली अवधियाँ छोड़ दी जाती हैं। 1m, 5m और 15m पिछले 24 घंटे दिखाते हैं; 1h, 4h, 1d और 1w पिछला एक साल (सबसे नई 1,000 कैंडल)। दिन 00:00 UTC पर शुरू होते हैं, हफ़्ते सोमवार को।
{
"symbol": "BTC-USDT",
"interval": "1h",
"candles": [
{
"time": 1793318400000,
"open": "62803.91",
"high": "77284.47",
"low": "62803.91",
"close": "77284.47",
"volume": "0.0035",
"quoteVolume": "265.919648",
"trades": 7
}
]
}GET/api/tickers
हर मार्केट के लिए पिछले 24 घंटे के आँकड़े। 24 घंटे में कोई ट्रेड न हुआ हो तो open, high और low null होते हैं; last अब तक का सबसे नया ट्रेड है, या null। बदलाव = (last − open) / open।
कोई पैरामीटर नहीं।
{
"tickers": [
{
"symbol": "BTC-USDT",
"last": "77284.47",
"open": "60000.00",
"high": "77284.47",
"low": "60000.00",
"volume": "0.0179",
"quoteVolume": "1130.159648",
"trades": 13
}
]
}API कुंजी से साइन किए जाते हैं। ऑर्डर ID संख्याएँ हैं, जो एक मार्केट के भीतर अनोखी होती हैं।
POST/api/orders
लिमिट या मार्केट ऑर्डर लगाता है और मैचिंग के बाद 201 के साथ उसे, उसके किए ट्रेड समेत, लौटाता है। status open, filled या closed होता है (closeReason unfilled, self_trade, या ऐसे post_only ऑर्डर के लिए would_trade जो ट्रेड कर जाता)। मार्केट ऑर्डर की price वह सबसे खराब कीमत है जहाँ तक वह पहुँच सकता था, प्राइस बैंड से सीमित।
{
"market": "BTC-USDT",
"side": "buy",
"type": "limit",
"price": "50000.00",
"quantity": "0.0010",
"timeInForce": "gtc"
}{
"order": {
"market": "BTC-USDT",
"id": 111,
"type": "limit",
"side": "buy",
"price": "50000.00",
"quantity": "0.0010",
"remaining": "0.0010",
"spend": null,
"timeInForce": "gtc",
"placedAt": 1793323476006,
"status": "open",
"closeReason": null,
"trades": []
}
}POST/api/orders/cancel
एक खुला ऑर्डर रद्द करता है और उसका रोका हुआ हिस्सा छोड़ देता है। ID एक मार्केट के भीतर अनोखी होती हैं, इसलिए दोनों भेजें।
{ "market": "BTC-USDT", "id": 111 }{
"order": {
"market": "BTC-USDT",
"id": 111,
"type": "limit",
"side": "buy",
"price": "50000.00",
"quantity": "0.0010",
"remaining": "0.0010",
"spend": null,
"timeInForce": "gtc",
"placedAt": 1793323476006,
"status": "closed",
"closeReason": "cancelled"
}
}POST/api/orders/cancel-all
आपके सभी खुले ऑर्डर, या सिर्फ़ एक मार्केट के, रद्द करता है। बॉडी छोड़ी जा सकती है (हर मार्केट)। cancelled रद्द हुए ऑर्डर की संख्या है।
{ "market": "BTC-USDT" }{ "cancelled": 2 }GET/api/orders
हर मार्केट में आपके खुले ऑर्डर, यह बताते हुए कि कितना भरना बाकी है (remaining)।
कोई पैरामीटर नहीं।
{
"orders": [
{
"market": "BTC-USDT",
"id": 111,
"type": "limit",
"side": "buy",
"price": "50000.00",
"quantity": "0.0010",
"remaining": "0.0010",
"timeInForce": "gtc",
"placedAt": 1793323476006
}
]
}GET/api/orders/history
आपके बंद ऑर्डर, सबसे हाल में बंद हुए पहले, यह बताते हुए कि कितना भरा, उसका मूल्य और फ़ीस। पेज next पर खत्म होते हैं: पुरानी पंक्तियों के लिए इसे before में भेजें; null का मतलब है कि और नहीं हैं।
{
"orders": [
{
"market": "BTC-USDT",
"id": 95,
"type": "limit",
"side": "buy",
"price": "74624.04",
"quantity": "0.0010",
"remaining": "0.0000",
"spend": null,
"timeInForce": "gtc",
"placedAt": 1793321026544,
"status": "filled",
"closeReason": null,
"filled": "0.0010",
"filledValue": "74.624040",
"fee": "0.149249",
"feeAsset": "USDT",
"closedAt": 1793321027591
}
],
"next": null
}API कुंजी से साइन किए जाते हैं।
GET/api/balances
हर एसेट, यह बताते हुए कि कितना उपलब्ध है और कितना रोका गया है (खुले ऑर्डर या लंबित निकासी में), एसेट के पूरे दशमलव में।
कोई पैरामीटर नहीं।
{
"balances": [
{ "asset": "BTC", "available": "0.01250000", "onHold": "0.00000000" },
{ "asset": "USDT", "available": "68175.000000", "onHold": "12000.000000" }
]
}GET/api/fills
हर ट्रेड में आपकी तरफ़, नए पहले: role मेकर या टेकर है, और फ़ीस कोट एसेट में ली जाती है। पेज ऑर्डर हिस्ट्री की तरह।
{
"fills": [
{
"market": "BTC-USDT",
"order": 95,
"trade": 14,
"side": "buy",
"role": "taker",
"price": "74624.04",
"quantity": "0.0010",
"value": "74.624040",
"fee": "0.149249",
"feeAsset": "USDT",
"time": 1793321027591
}
],
"next": "1188-2"
}हर मार्केट अपनी ऑर्डर बुक (हर तरफ़ ऊपर के 50 स्तर), ट्रेड और 24 घंटे का टिकर सर्वर-सेंट इवेंट के रूप में स्ट्रीम करता है। कोई कुंजी नहीं चाहिए: जिस मार्केट को आप देखते हैं उसकी एक स्ट्रीम खोलें और काम पूरा होने पर बंद करें।
GET/api/markets/{symbol}/streamसार्वजनिक
// In a browser (or Node.js with an EventSource package). No key needed.
const stream = new EventSource("https://croleo.com/api/markets/BTC-USDT/stream");
let seq = null;
stream.addEventListener("snapshot", (event) => {
const s = JSON.parse(event.data);
seq = s.seq;
// Replace your state with s.bids, s.asks, s.trades (newest first) and s.ticker.
});
stream.addEventListener("update", (event) => {
const u = JSON.parse(event.data);
if (u.seq !== seq + 1) {
stream.close(); // a gap: open a new stream, which starts with a snapshot
return;
}
seq = u.seq;
// Apply u.bids and u.asks (a quantity of 0 removes the level), then u.trades (oldest first).
});snapshot: पूरी स्थिति (बुक, सबसे नए पहले क्रम में हाल के ट्रेड, टिकर और स्टेटस)। हमेशा पहला इवेंट; पीछे छूट गए क्लाइंट को यह बीच में भी आ सकता है, और तब यह सब कुछ बदल देता है।update: क्या बदला। bids और asks में सिर्फ़ बदले हुए स्तर होते हैं: उस कीमत वाले स्तर को बदलें, और मात्रा शून्य हो तो हटा दें। trades में नए ट्रेड होते हैं, पुराने पहले। ticker सिर्फ़ तब होता है जब ट्रेड हुए हों।seq एक कनेक्शन पर हर अपडेट के साथ ठीक 1 बढ़ता है। बीच में अंतर आए तो स्ट्रीम बंद करके फिर खोलें। सर्वर रीस्टार्ट के बाद गिनती बड़ी संख्या से आगे बढ़ती है: हमेशा सबसे नए स्नैपशॉट से आगे बढ़ें।GET /api/orders, GET /api/balances और GET /api/fills को बार-बार पढ़ें।{
"symbol": "BTC-USDT",
"seq": 922,
"status": "trading",
"bids": [["77209.22", "0.0037"]],
"asks": [["77487.43", "0.0042"]],
"trades": [
{
"id": 13,
"price": "77284.47",
"quantity": "0.0005",
"side": "buy",
"time": 1793320210895
}
],
"ticker": {
"last": "77284.47",
"open": "60000.00",
"high": "77284.47",
"low": "60000.00",
"volume": "0.0179",
"quoteVolume": "1130.159648",
"trades": 13
}
}{
"seq": 923,
"status": "trading",
"bids": [["77209.22", "0.0000"]],
"asks": [],
"trades": [
{
"id": 14,
"price": "77209.22",
"quantity": "0.0037",
"side": "sell",
"time": 1793320230512
}
],
"ticker": {
"last": "77209.22",
"open": "60000.00",
"high": "77284.47",
"low": "60000.00",
"volume": "0.0216",
"quoteVolume": "1415.833762",
"trades": 14
}
}कोई भी कुंजी निकासी एंडपॉइंट तक नहीं पहुँच सकती, और ऐसी कोई सेटिंग नहीं जो इसकी अनुमति दे। निकासी सिर्फ़ ऐप में होती है, पासकी जाँच, नए पतों के लिए इंतज़ार और बड़ी राशियों की समीक्षा के साथ। लीक हुई कुंजी ज़्यादा से ज़्यादा आपके अपने बैलेंस के भीतर ऑर्डर लगा या रद्द कर सकती है; उसे तुरंत खाता, API कुंजियाँ में रद्द करें।
निकासी कैसे सुरक्षित है