अगर आपका बॉट पहले से Binance USD-M Futures बोलता है, तो बस एक बेस URL बदलें और आप BuyCrypt पर लाइव हैं। हमारे यूज़र्स लीडरबोर्ड में आपके बॉट को खोजते हैं, इसे फ्री $1,000 डेमो अकाउंट पर आज़माते हैं, और भरोसा होने पर रियल कीज़ पर अपग्रेड करते हैं।
कोई कोड रीराइट नहीं। कोई एक्सचेंज-स्पेसिफिक झंझट नहीं। वही HMAC-SHA256 साइनिंग, वही WebSocket यूज़र-डेटा स्ट्रीम, वही ऑर्डर टाइप्स — हमारे डेमो ट्रेडिंग इंजन पर रैप किया गया ताकि यूज़र्स बिना कैपिटल जोखिम में डाले बॉट्स की तुलना कर सकें।
सब्सक्राइब करने वाले हर यूज़र को $1,000 वर्चुअल बैलेंस वाला अपना डेमो अकाउंट मिलता है। आपका बॉट उस पर ट्रेड करता है। वे लाइव PnL, ड्रॉडाउन, विन रेट देखते हैं। उनके रियल कैपिटल को कोई जोखिम नहीं — और आपके लिए कोई एक्विजिशन कॉस्ट नहीं।
आपके बॉट का अपना डेमो अकाउंट पब्लिक लीडरबोर्ड में 🤖 БОТ बैज के साथ दिखता है। यूज़र्स रियल ट्रेडर्स के बीच PnL रैंकिंग देखते हैं। रो पर टैप करें, "Connect" दबाएं — इंस्टेंट सब्सक्रिप्शन।
अगर आपका बॉट किसी भी Binance Futures SDK (binance-connector-python, python-binance, CCXT, आदि) का उपयोग करता है, तो इसके base_url को https://api.buycrypt.com/fapi पर पॉइंट करें। HMAC, recvWindow, ऑर्डर टाइप्स — बिल्कुल समान।
जब कोई यूज़र सब्सक्राइब करता है, हम ताज़ी बनी API key + secret आपके वेबहुक URL पर POST करते हैं — HMAC-साइन्ड, फेल होने पर एक्सपोनेंशियल बैकऑफ के साथ रीट्राई, डेड-लेटर रिकवरेबल। आपको कभी यूज़र से क्रेडेंशियल्स मांगने की ज़रूरत नहीं।
यूज़र लीडरबोर्ड खोलता है। आपके बॉट का अकाउंट यूज़रनेम के बगल में 🤖 БОТ चिप और सब्सक्राइबर काउंट के साथ दिखाई देता है। वे रो पर टैप करते हैं।
बॉट के प्रोफाइल पेज पर उन्हें "Connect to demo account" दिखता है। एक टैप से उनके लिए नया $1,000 डेमो बन जाता है और आपका बॉट उस पर ट्रेड करना शुरू कर देता है।
यूज़र दिनों या हफ्तों तक बॉट को अपने डेमो पर ट्रेड करते देखता है। PnL, पोज़िशन्स, विन रेट — सब कुछ ऐप में लाइव। अगर उन्हें पसंद आता है, तो वे डेमो से प्रोडक्शन में अपग्रेड करने के लिए BuyCrypt के अंदर अपनी रियल Binance API key डालते हैं।
यूज़र BuyCrypt के अंदर अपनी रियल Binance API key जोड़ता है। हम इसे आपके वेबहुक पर उसी तरह डिलीवर करते हैं जैसे डेमो key डिलीवर की थी — वही subscription.created इवेंट, बस प्रोडक्शन क्रेडेंशियल्स के साथ। एक ही इंटीग्रेशन डेमो और लाइव दोनों फ्लो को कवर करता है।
एक सामान्य BuyCrypt अकाउंट रजिस्टर करें — किसी भी यूज़र जैसा ही फ्लो। साइन अप करते ही आपको शुरुआती बैलेंस के साथ एक फ्री डेमो अकाउंट मिल जाएगा। कोई एप्लीकेशन फॉर्म नहीं, कोई रिव्यू क्यू नहीं।
BuyCrypt मोबाइल ऐप के अंदर ही API keys जनरेट करें: My Profile → API keys → अपने डेमो अकाउंट पर टैप करें → Generate। आपको एक बार दिखने वाली ताज़ी apiKey + apiSecret मिलेगी — उन्हें अपने बॉट में कॉपी करें। फिर अपने मौजूदा Binance USD-M Futures बॉट को https://api.buycrypt.com/fapi पर पॉइंट करें और यह बस काम करता है — वही HMAC, वही एंडपॉइंट्स, वही ऑर्डर टाइप्स।
जैसे ही हम आपके डेमो पर API-संचालित ट्रेडिंग डिटेक्ट करते हैं, आपका अकाउंट अपने आप बॉट के रूप में फ्लैग हो जाता है। आपका डेमो लीडरबोर्ड में 🤖 БОТ चिप और एक पब्लिक प्रोफाइल के साथ दिखता है, ताकि दूसरे यूज़र्स इसे खोज और सब्सक्राइब कर सकें।
जब आप सब्सक्राइबर लेने के लिए तैयार हों, सेटिंग्स में अपने बॉट प्रोफाइल में एक वेबहुक URL जोड़ें। हर बार जब कोई यूज़र सब्सक्राइब करता है — डेमो पर या रियल Binance keys के साथ — हम उस यूज़र के अकाउंट के लिए API key + secret के साथ subscription.created इवेंट POST करते हैं। (userId, apiKey, apiSecret) स्टोर करें और उनकी ओर से ट्रेडिंग शुरू करें।
ज़्यादातर Binance Futures SDKs एक कस्टम बेस URL स्वीकार करते हैं। एक सामान्य Python बॉट को बस इतना बदलाव चाहिए:
# before — trading on real Binance from binance.um_futures import UMFutures client = UMFutures(key=API_KEY, secret=API_SECRET) # after — trading on a BuyCrypt user's demo from binance.um_futures import UMFutures client = UMFutures( key=API_KEY, secret=API_SECRET, base_url="https://api.buycrypt.com/fapi", # <- the only line that changes ) # everything below is identical to your existing code client.new_order(symbol="BTCUSDT", side="BUY", type="MARKET", quantity=0.01) client.account() client.cancel_open_orders(symbol="BTCUSDT")
CCXT, python-binance, Go का go-binance, JS का node-binance-api — सभी एक ही तरह काम करते हैं। सामान्य requests.get(...).headers["X-MBX-APIKEY"] = key बॉट्स भी काम करते हैं; HMAC साइनिंग रूल बाइट-आइडेंटिकल है।
जब कोई BuyCrypt यूज़र आपके बॉट को सब्सक्राइब करता है, तो हम सर्वर-साइड पर प्रति-यूज़र API key + secret जनरेट करते हैं और उन्हें आपके रजिस्टर्ड वेबहुक URL पर POST करते हैं। सीक्रेट कभी यूज़र को नहीं दिया जाता — यह केवल आपको, HTTPS पर, साइन किया हुआ भेजा जाता है।
TL;DR: sign up → tap «Generate API key» on your demo → generate a webhook secret → run one Python script → admin approves. ~5 minutes.
Open buycrypt.com/terminal (or the mobile app). Sign in via Google or phone. A $1,000 USDT demo account is created automatically — that's the sandbox your bot will trade on.
In the app: Profile → API Keys → tap your demo account → «Bot API keys» → Generate. A dialog shows the apiKey + apiSecret once — copy both, you can't recover the secret afterwards.
# what you'll save API_KEY = "3fc370a4ac94b9aa756e2a97842dc04c" API_SECRET = "3WJ86kV_VQzLWaED3hSRlY9R6wQHh_f3UEZ_q-CrwRU"
Same shape as Binance — your existing USD-M Futures bot library reads it as a regular Binance key with base URL https://api.buycrypt.com/fapi.
A second secret, separate from API_SECRET. We use it to sign the events we POST to your webhook URL — so you can verify the request really came from us. You generate it on your side; we encrypt-store it but never reveal back:
# any of these works — pick one. Save the output. $ openssl rand -hex 32 # macOS / Linux $ python3 -c "import secrets; print(secrets.token_hex(32))" # cross-platform # sample output 8a31c2f4d5e6789abc01234567890def8a31c2f4d5e6789abc01234567890def
Drop your three secrets into one signed POST. Save this as register_bot.py and run it once. Works on any OS with Python 3.10+ and pip install requests:
import hmac, hashlib, time, urllib.parse, requests # ─── fill these in from steps 2 and 3 ───────────────────── API_KEY = "3fc370a4ac94b9aa756e2a97842dc04c" API_SECRET = "3WJ86kV_VQzLWaED3hSRlY9R6wQHh_f3UEZ_q-CrwRU" WEBHOOK_SECRET = "8a31c2f4d5e6789abc01234567890def8a31c2f4d5e6789abc01234567890def" SLUG = "alpha-trader" # lowercase, [a-z0-9-], unique DISPLAY_NAME = "Alpha Trader" # shown to users in the bot list WEBHOOK_URL = "https://your-bot.example.com/buycrypt/hook" # MUST be HTTPS, public # ────────────────────────────────────────────────────────── params = { "slug": SLUG, "displayName": DISPLAY_NAME, "webhookUrl": WEBHOOK_URL, "webhookSecret": WEBHOOK_SECRET, "defaultLeverage": 10, "timestamp": int(time.time() * 1000), } qs = urllib.parse.urlencode(params) sig = hmac.new(API_SECRET.encode(), qs.encode(), hashlib.sha256).hexdigest() r = requests.post( "https://api.buycrypt.com/fapi/v1/bot/profiles", headers={ "X-MBX-APIKEY": API_KEY, "Content-Type": "application/x-www-form-urlencoded", }, data=qs + f"&signature={sig}", ) print(r.status_code, r.json())
Notice no demoKeyPairId — your API_KEY already points to the demo it was generated for. Need to register against a different demo? Generate a separate API key for it (step 2 again).
Expected output:
201 {
"botId": 42,
"slug": "alpha-trader",
"status": "PENDING_REVIEW",
"webhookUrl": "https://your-bot.example.com/buycrypt/hook",
"webhookStatus": "ACTIVE",
"webhookSecretAutoGenerated": false
}
Common errors:
{"code":-2010, "msg":"Slug already in use."} # pick another slug
{"code":-1102, "msg":"webhookSecret must be at least 32..."} # too short — use 32+ chars
{"code":-1022, "msg":"Signature for this request is not valid."} # API_SECRET wrong, or params order changed after signing
{"code":-1003, "msg":"Bot registration rate limit: 1 per hour..."} # wait it out
Bot lands in PENDING_REVIEW. Our admin sees your request immediately and approves it. To check status anytime:
import hmac, hashlib, time, urllib.parse, requests API_KEY = "3fc370a4..." API_SECRET = "3WJ86kV..." qs = urllib.parse.urlencode({"timestamp": int(time.time() * 1000)}) sig = hmac.new(API_SECRET.encode(), qs.encode(), hashlib.sha256).hexdigest() r = requests.get( f"https://api.buycrypt.com/fapi/v1/bot/profiles?{qs}&signature={sig}", headers={"X-MBX-APIKEY": API_KEY}, ) print(r.json()) # [{"botId":42, "status":"ACTIVE", ...}] when approved
Once "status":"ACTIVE": every time a user subscribes we POST to your webhookUrl with the per-subscriber API key your bot will trade with. The events shape and a copy-paste signature-verification snippet are right below this section.
Lost your webhook secret? Pick a new one and rotate (same signing pattern as registration):
params = {
"webhookSecret": NEW_SECRET, # or omit to get backend-generated
"timestamp": int(time.time() * 1000),
}
qs = urllib.parse.urlencode(params)
sig = hmac.new(API_SECRET.encode(), qs.encode(), hashlib.sha256).hexdigest()
requests.post(
"https://api.buycrypt.com/fapi/v1/bot/profiles/42/webhook/rotate-secret",
headers={"X-MBX-APIKEY": API_KEY,
"Content-Type": "application/x-www-form-urlencoded"},
data=qs + f"&signature={sig}",
)
Old secret invalid the second the new one saves. Rate limit: 10 rotations/hour per bot.
subscription.created — यूज़र ने अभी सब्सक्राइब कियाPOST https://your-bot.example.com/buycrypt/hook Content-Type: application/json User-Agent: BuyCrypt-Webhook/1.0 X-BuyCrypt-Event: subscription.created X-BuyCrypt-Delivery-Id: 7f3b2e8c-a4d1-4f12-93b8-0c1e9f8d2a4b # dedup key — store + reject duplicates X-BuyCrypt-Timestamp: 1745605200123 # ms epoch when payload was built X-BuyCrypt-Signature: 5e8c2d… # hex(HMAC-SHA256(webhookSecret, ts + "." + body)) { "event": "subscription.created", "deliveryId": "7f3b2e8c-a4d1-4f12-93b8-0c1e9f8d2a4b", "timestamp": 1745605200123, "data": { "subscriptionId": 42, "botProfileId": 7, "subscriberHandle": "user_fb_uid_a", "apiKey": "3fc370a4ac94b9aa756e2a97842dc04c", "apiSecret": "3WJ86kV_VQzLWaED3hSRlY9R6wQHh_f3UEZ_q-CrwRU", "demoKeyPairId": 9001, "initialBalance": "1000.00000000", "permissions": "READ_TRADE", "ipWhitelist": "", "createdAt": "2026-04-25T18:00:00Z" } }
subscription.deleted — यूज़र डिस्कनेक्ट हुआ, key डिसेबलX-BuyCrypt-Event: subscription.disconnected { "event": "subscription.disconnected", "deliveryId": "…", "timestamp": …, "data": { "subscriptionId": 42, "botProfileId": 7, "apiKey": "3fc370a4…", "reason": "USER_UNSUBSCRIBED", "disconnectedAt": "2026-04-25T18:30:00Z" } }
secret.regenerated — एडमिन ने आपका वेबहुक सीक्रेट रोटेट कियाX-BuyCrypt-Event: secret.regenerated { "event": "secret.regenerated", "deliveryId": "…", "timestamp": …, "data": { "subscriptionId": 42, "apiKey": "3fc370a4…", "newApiSecret": "new_plaintext_keep_old_valid_24h", "oldSecretValidUntil": "2026-04-26T18:00:00Z" } }
Use the raw request body bytes — DO NOT parse JSON first and re-serialize, you'll lose key order and signatures will diverge. Always compare in constant time.
# Python (FastAPI / Flask) import hmac, hashlib, time WEBHOOK_SECRET = "whsec_aGVsbG8gd29ybGQ_..." # whsec_…43 chars def verify(headers, body_bytes): sig = headers["X-BuyCrypt-Signature"] ts = int(headers["X-BuyCrypt-Timestamp"]) # anti-replay: reject if too old if abs(time.time() * 1000 - ts) > 5 * 60 * 1000: return False payload = f"{ts}.".encode() + body_bytes expected = hmac.new(WEBHOOK_SECRET.encode(), payload, hashlib.sha256).hexdigest() return hmac.compare_digest(expected, sig)
// Node.js / Express — read RAW body, not parsed JSON const crypto = require('crypto'); const SECRET = 'whsec_aGVsbG8gd29ybGQ_...'; app.post('/buycrypt/hook', express.raw({ type: 'application/json' }), // raw, not json()! (req, res) => { const sig = req.headers['x-buycrypt-signature']; const ts = parseInt(req.headers['x-buycrypt-timestamp'], 10); if (Math.abs(Date.now() - ts) > 5 * 60 * 1000) return res.status(401).end(); const expected = crypto.createHmac('sha256', SECRET) .update(`${ts}.`).update(req.body).digest('hex'); if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(sig))) { return res.status(401).end(); } // req.body is a Buffer here — JSON.parse(req.body.toString('utf8')) res.sendStatus(200); });
एक्सपोनेंशियल बैकऑफ के साथ 6 प्रयास: 1मि, 5मि, 30मि, 2घं, 6घं, 12घं। सभी 6 फेल होने के बाद, इवेंट हमारी डेड-लेटर टेबल में पहुंच जाता है और एडमिन इसे रीप्ले कर सकता है।
अगर आपका एंडपॉइंट लगातार 10 बार फेल होता है, तो हम इसे डिसेबल मार्क कर देते हैं और इवेंट्स भेजना बंद कर देते हैं। दोबारा एनेबल करने के लिए हमसे संपर्क करें। यह एक डेड बॉट को नए सब्सक्राइबर्स को हमेशा के लिए ब्लॉक करने से रोकता है।
हर बॉडी को रजिस्ट्रेशन के समय शेयर किए गए सीक्रेट से HMAC-SHA256 साइन किया जाता है। पेलोड पर भरोसा करने से पहले कॉन्स्टेंट टाइम में वेरिफाई करें। उदाहरण हमारी पार्टनर गाइड में हैं।
बेस URL: https://api.buycrypt.com/fapi. Auth: X-MBX-APIKEY हेडर + साइन्ड एंडपॉइंट्स पर HMAC-SHA256 सिग्नेचर। Recv window: डिफ़ॉल्ट 5,000 ms, अधिकतम 60,000 ms।
{}।MARKET, LIMIT, STOP_MARKET, TAKE_PROFIT_MARKET, STOP, TAKE_PROFIT (लिमिट-फ्लेवर), TRAILING_STOP_MARKET। फ्लैग्स: reduceOnly, closePosition, timeInForce (GTC/IOC/FOK), आइडेम्पोटेंसी के लिए newClientOrderId, workingType, callbackRate।orderId या origClientOrderId से किसी एक ऑर्डर को क्वेरी करें।{dualSidePosition: false}।ORDER_TRADE_UPDATE, ACCOUNT_UPDATE, MARGIN_CALL। Binance जैसा ही पेलोड शेप।subscribe/unsubscribe/list_subscriptions कंट्रोल मैसेज सपोर्ट करता है — अपस्ट्रीम Binance को पासथ्रू।X-MBX-USED-WEIGHT-1M, X-MBX-ORDER-COUNT-10S, 429 पर Retry-After।Retry-After के ज़रिए बैक ऑफ करेंकोई एप्लीकेशन फॉर्म नहीं, कोई रिव्यू क्यू नहीं, कोई इंटीग्रेशन फीस नहीं। किसी भी यूज़र की तरह साइन अप करें, मोबाइल ऐप में API keys जनरेट करें, अपने बॉट को https://api.buycrypt.com/fapi पर पॉइंट करें — बस इतनी ही है पूरी ऑनबोर्डिंग।