NAV
shell plaintext

مستندات API نوبیتکس

NOBITEX

به مستندات API نوبیتکس، بزرگترین بازار ارز دیجیتال ایران خوش آمدید. نوبیتکس از ابتدای کار API خود را در اختیار تمامی کاربران و توسعه‌دهندگان گرامی قرار داده است. با استفاده از API نوبیتکس می‌توانید علاوه بر اطلاع از آخرین قیمت‌ها و وضعیت بازار رمزارزها در ایران، اقدام به مدیریت حساب نوبیتکس خود به روش خودکار و مبتنی بر کد نمایید. استفاده از API علاوه بر فراهم‌سازی امکانات نوین برای کاربران، امکان انجام معاملات خودکار که باعث سیال و منصفانه‌تر شدن قیمت در بازارها می‌شود را فراهم می‌کند.

پیش از استفاده از API نوبیتکس اطمینان حاصل کنید که با قوانین نوبیتکس و همچنین قوانین و شرایط استفاده از API نوبیتکس آشنایی کامل دارید. همین طور با توجه به احتمال ایجاد تغییرات در بستر نوبیتکس یا ساختار و جزئیات APIها، همواره به اطلاعیه‌های کانال رسمی تلگرام نوبیتکس و کانال رسمی تلگرام API نوبیتکس دقت کنید. به علاوه به صورت مستمر صفحه سابقه تغییرات API نوبیتکس را رصد کنید تا از تمامی تغییرات API نوبیتکس مطلع باشید.

در استفاده از API همواره اطمینان حاصل کنید که کد شما قابلیت مواجهه با حالت‌های خطا و شرایط و تغییرات پیش‌بینی نشده را داشته باشد و عکس العمل مناسبی در این خصوص نشان دهد. با توجه به حساسیت‌های بازارهای مالی، لازم است که کدهای استفاده کننده از API به صورت اصولی و با ملاحظاتی مانند کنترل نرخ درخواست‌ها در شرایط مختلف، مدیریت حالت‌های خطا، پیش‌گیری از تشدید آبشاری خطاها، سازوکارهای حفاظت در عمق، وجود سامانه‌های مانیتورینگ و اعلان، وجود سازوکارهای مدیریت ریسک و ... توسعه داده شود.

اگر برای اولین بار است که از API نوبیتکس استفاده می‌کنید، می‌توانید از بخش راهنمای شروع به کار با API کمک بگیرید.

احراز هویت و توکن

Authorization: Token yourTOKENhereHEX0000000000

برای استفاده از APIهای غیر عمومی نیاز به ارسال توکن وجود دارد. این توکن باید به عنوان HTTP Header درخواست به صورت زیر ارسال شود:

Authorization: Token yourTOKENhereHEX0000000000

به جز APIهای بخش‌هایی که عنوان «عمومی» در انتهای نام‌شان آورده شده باشد، برای استفاده از تمام APIها نیاز به ارسال توکن وجود دارد. توکن مشخص می‌کند که کدام کاربر در حال ارسال این درخواست است.

برای دریافت توکن می‌توانید با مراجعه به پنل کاربری خود در نوبیتکس، از بخش پروفایل وارد صفحه تنظیمات شده و توکن خود را دریافت نمایید. در صورتی که گزینه «مرا به خاطر بسپار» را در هنگام ورود به نوبیتکس انتخاب کرده باشید، این توکن تا ۳۰ روز یا زمان لاگ‌اوت شما از نوبیتکس معتبر خواهد ماند.

در صورت تمایل به دریافت دوره‌ای و خودکار توکن، می‌توانید از API ورود - دریافت توکن استفاده نمایید. ولی این کار ضروری نیست و روش پیشنهادی ما برای اغلب کاربران دریافت مستقیم توکن از پنل کاربری است. تنها در صورتی که با مخاطرات ذخیره گذرواژه خود در کد و روش‌های امن این کار آشنا هستید، در استفاده از API مهارت دارید، و از طرفی نیاز به دریافت کاملاً خودکار توکن دارید، از API دریافت توکن استفاده نمایید.

تنظیم User Agent

جهت شناسایی و تفکیک بهتر بات‌ها و پشتیبانی از آن‌ها، اکیداً توصیه می‌شود که در تمامی درخواست‌ها مقدار UserAgent را مطابق الگوی TraderBot/XXXXX ارسال نمایید، که بخش XXXXX هر نام یکتایی است که می‌توانید برای بات خود انتخاب کنید. با رعایت این نام‌گذاری پاسخگویی به درخواست‌های پشتیبانی و عیب‌یابی مشکلات بهتر صورت می‌گیرد.

محدودیت‌ها

توجه داشته باشید، برای استفاده از APIها محدودیت هایی وجود دارد که در قسمت توضیحات هر کدام از APIها این موارد ذکر شده است.

تغییرات و موارد قدیمی

با توجه به ماهیت نوین و تغییرات مستمر مورد نیاز در حوزه رمزارزها، در API نوبیتکس نیز ممکن است در طول زمان تغییراتی ایجاد شود. پشتیبانی طولانی‌مدت از نسخه‌های قدیمی API معمولاً فرآیندی پیچیده و سخت است و باعث کاهش سرعت ایجاد تغییرات جدید در بستر نوبیتکس می‌شود. به همین دلیل API نوبیتکس همواره در عین حفظ ساختار کلی و اجزای اصلی ثابت، در حال بهبود مستمر و به‌روزرسانی است. کاربران گرامی می‌توانند با پیگیری تغییرات API که در صفحه سابقه تغییرات API نوبیتکس اطلاع‌رسانی می‌شود، همواره از تغییرات احتمالی ضروری در کد خود مطلع شوند تا بتوانند به صورت بدون وقفه از جدیدترین امکانات و روش‌های دسترسی به API نوبیتکس بهره‌مند شوند.

مواردی که قبلاً در API موجود بودند ولی در حال حاضر پشتیبانی نمی‌شوند، جهت ثبت سابقه در صفحه API قدیمی موجود هستند. ممکن است APIهای دیگری علاوه بر موارد مستند شده در مستندات پیش‌رو وجود داشته باشند، که این موارد جز API رسمی نوبیتکس نبوده و تضمینی در قبال ادامه‌دار بودن پشتیبانی از آن‌ها وجود ندارد. همین طور در استفاده از APIهای فعلی لازم به توضیح است که ممکن است علاوه بر فیلدهایی که در ورودی یا خروجی مستند شده است، فیلدهای دیگری نیز وجود داشته باشند. این فیلدها تا زمانی که در مستندات اضافه نشده باشند باید به عنوان امکانات آزمایشی و موقت در نظر گرفته شوند و نباید مورد استفاده عموم کاربران قرار گیرد. تنها کافی است که کدهای توسعه داده شده در صورت مشاهده فیلدی غیر از فیلدهای مورد انتظار خود، دچار خطا نشوند و صرفاً وجود آن فیلد را نادیده بگیرند.

راهنمای حل مشکلات

در صورتی که پاسخ مد نظر خود را از API دریافت نمی‌کنید، ابتدا اطمینان حاصل کنید که تمامی موارد ذکر شده در مستندات مربوطه را به درستی رعایت کرده باشید. بهترین روش حل مشکلات برنامه‌نویسی سعی در ریشه‌یابی مشکلات با تغییر متغیرها و بررسی تمام حالت‌ها و استفاده از روش‌های مرسوم عیب‌یابی کد است.

در صورت حل نشدن مشکل، مراجعه به بخش سوالات متداول و ملاحظات عمومی می‌تواند در عیب‌یابی مفید باشد. همین طور اگر مشکل مربوط به حساب شما باشد و اقدامی را نه از طریق API و نه از طریق سایت نوبیتکس نتوانید انجام دهید، باید با پشتیبانی آنلاین نوبیتکس در ارتباط باشید.

در صورتی که بخشی از مستندات API مبهم است، یا پیشنهادی درباره APIهای موجود دارید، یا پس از بررسی کامل اطمینان دارید که مشکلی در API نوبیتکس وجود دارد، می‌توانید در مخزن گیت‌هاب مستندات نوبیتکس API مورد (issue) جدیدی را ایجاد نمایید و با ما در ارتباط باشید. دقت کنید که این کانال عمومی است و نباید در آن هیچ گونه اطلاعات حساس یا توکن یا سایر اطلاعات حساب خود را مطرح کنید.

راهنمای شروع به کار با API

اگر برای اولین بار از API نوبیتکس یا سایر بازارهای رمزارز استفاده می‌کنید، برای شروع کار پیشنهاد می‌شود گام‌های زیر را طی کنید:

همین طور می‌توانید بنا به نیاز خود این موارد را نیز در ادامه در نظر بگیرید:

اطلاعات بازار (عمومی)

لیست سفارش‌ها: اردربوک

curl 'https://api.nobitex.ir/v2/orderbook/BTCIRT'
http GET https://api.nobitex.ir/v2/orderbook/BTCIRT

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok",
    "lastUpdate": 1644991756704,
    "bids": [
        ["1476091000", "1.016"],
        ["1479700000", "0.2561"]
    ],
    "asks": [
        ["1470001120", "0.126571"],
        ["1470000000", "0.818994"]
    ]
}

برای دریافت لیست سفارش‌ها یا همان اردربوک بازارهای مختلف، از این درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
SYMBOL string الزامی نماد بازار BTCIRT

نمونه پاسخ درخواست /v2/orderbook/all:

{
  "status": "ok",
  "BTCIRT": {
    "lastUpdate": 1644991756704,
    "bids": [
      ["1476091000", "1.016"],
      ["1479700000", "0.2561"]
    ],
    "asks": [
      ["1470001120", "0.126571"],
      ["1470000000", "0.818994"]
    ]
  },
  "USDTIRT": {
    "lastUpdate": 1644991767392,
    "bids": [
      ["277990", "6688.3"],
      ["278000", "28185.03"]
    ],
    "asks": [
      ["277960", "119.31"],
      ["277960", "1079.75"]
    ]
  }
}

پارامترهای پاسخ

خروجی شامل دو آرایه asks و bids بوده که در هر یک قیمت و مقدار سفارش‌های بازار وجود دارد. به دلایل تاریخی سفارش‌های فروش در bids و سفارش‌های خرید در asks بازگردانده می‌شوند. هر یک از این آرایه‌ها شامل دوتایی‌های «قیمت، مقدار» هستند.

همچنین زمان آخرین به‌روزرسانی در اردربوک ذیل پارامتر lastUpdate به فرمت یونیکس داده می‌شود.

روش پیشنهادی نگهداری اردربوک

در صورتی که در کد خود نیاز به نگهداری آخرین وضعیت اردربوک نوبیتکس هستید، در یک حلقه اقدام به دریافت اردربوک نوبیتکس نمایید. حتماً در میان هر دو بار اجرای حلقه حداقل یک تا ده ثانیه صبر نمایید و از فراخوانی پیاپی و بی‌مکث اردربوک خودداری کنید. به دلیل وجود لایه‌های کش، در صورت فراخوانی در بازه‌های زیر یک ثانیه، همان داده فراخوانی قبلی را دریافت خواهید نمود. اگر در اغلب بازارهای نوبیتکس فعال هستید، می‌توانید در هر فراخوانی کل اردربوک را دریافت نمایید تا نیازی به فراخوانی همزمان چند اردربوک نداشته باشید. اگر کد خود را در چند رشته (ترد) یا پردازه یا سرور اجرا می‌کنید، حتماً اردربوک را در یک مرجع واحد دریافت نمایید و آن را در میان نمونه‌های برنامه خود به اشتراک بگذارید.

نمودار عمق (آزمایشی)

curl 'https://api.nobitex.ir/v2/depth/BTCIRT'
http GET https://api.nobitex.ir/v2/depth/BTCIRT

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
  "status": "ok",
  "lastUpdate": "1658565992195",
  "bids": [["7309999000", "2.200274"], ["7310000000", "2.199856"], ["7310025000", "2.102569"]],
  "asks": [["7409894000", "0.054789"], ["7447665000", "0.055276"], ["7450000000", "0.059756"]],
  "lastTradePrice": "7417000000"}

برای دریافت داده‌های نمودار عمق، یا همان اردربوک بازارهای مختلف، از این درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
SYMBOL string الزامی نماد بازار BTCIRT

پارامترهای پاسخ

خروجی شامل دو آرایه asks و bids بوده که در هر یک قیمت و مقدار سفارش‌های بازار وجود دارد. سفارش‌های خرید در bids و سفارش‌های فروش در asks بازگردانده می‌شوند. هر یک از این آرایه‌ها شامل دوتایی‌های «قیمت، مقدار» هستند که در هر دوتایی، مقدار قیمت، تجمیع شده و گرد شده با دقت مناسب بازار مورد نظر است.

همچنین زمان آخرین به‌روزرسانی نمودار عمق ذیل پارامتر lastUpdate به فرمت یونیکس داده می‌شود.

همچنین، مبلغ آخرین معامله ذیل پارامتر lastTradePrice ارسال می‌شود.

روش پیشنهادی نگهداری نمودار عمق

در صورتی که در کد خود نیاز به نگهداری آخرین وضعیت نمودار عمق نوبیتکس هستید، در یک حلقه اقدام به دریافت نمودار عمق نوبیتکس نمایید. حتماً در میان هر دو بار اجرای حلقه حداقل یک تا ده ثانیه صبر نمایید و از فراخوانی پیاپی و بی‌مکث خودداری کنید. به دلیل وجود لایه‌های کش، در صورت فراخوانی در بازه‌های زیر یک ثانیه، همان داده فراخوانی قبلی را دریافت خواهید نمود.

لیست معاملات

curl 'https://api.nobitex.ir/v2/trades/BCHIRT'
http GET https://api.nobitex.ir/v2/trades/BCHIRT

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok",
    "trades": [
        {
            "time": 1588689375067,
            "price": "1470000110",
            "volume": "0",
            "type": "sell"
        },
        {
            "time": 1588689360464,
            "price": "1470000110",
            "volume": "0.002",
            "type": "buy"
        }
    ]
}

برای دریافت لیست معاملات از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
symbol string الزامی نماد BTCIRT

پارامتر بازگشتی time زمان دقیق انجام شدن معامله است که با فرمت یونیکس نمایش داده میشود

آمار بازار نوبیتکس

curl 'https://api.nobitex.ir/market/stats?srcCurrency=btc&dstCurrency=rls'
http GET https://api.nobitex.ir/market/stats \
  srcCurrency=btc dstCurrency=rls

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "stats": {
        "btc-rls": {
            "bestSell": "749976360.0000000000",
            "isClosed": false,
            "dayOpen": "686021860.0000000000",
            "dayHigh": "750350000.0000000000",
            "bestBuy": "733059600.0000000000",
            "volumeSrc": "0.2929480000",
            "dayLow": "686021860.0000000000",
            "latest": "750350000.0000000000",
            "volumeDst": "212724856.0678640000",
            "dayChange": "9.38",
            "dayClose": "750350000.0000000000"
        }
    },
    "status": "ok"
}

برای دریافت آخرین آمار بازار نوبیتکس از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
srcCurrency string الزامی ارزها مبدا btc,usdt
dstCurrency string الزامی ارز مقصد rls

آمار OHLC بازار نوبیتکس

curl 'https://api.nobitex.ir/market/udf/history?symbol=BTCIRT&resolution=D&from=1562058167&to=1562230967'
http GET https://api.nobitex.ir/market/udf/history?symbol=BTCIRT&resolution=D&from=1562058167&to=1562230967

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
  "s": "ok",
  "t": [1562095800, 1562182200],
  "o": [146272500, 150551000],
  "h": [155869600, 161869500],
  "l": [140062400, 150551000],
  "c": [151440200, 157000000],
  "v": [18.221362316, 9.8592626506]
}

برای توضیحات بیشتر در مورد OHLC به این لینک مراجعه کنید.

برای دریافت آمار OHLC نوبیتکس از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
symbol string الزامی نماد بازار BTCIRT
resolution string الزامی بازه زمانی هر کندل D
from int الزامی زمان ابتدای بازه 1562058167
to int الزامی زمان پایان بازه 1562230967
page int 1 شماره صفحه 3

در صورت ورودی اشتباه برای resolution پاسخ به این صورت خواهد بود:

{
  "s": "error",
  "errmsg": "Invalid resolution!"
}
دقیقه‌ای توضیح ساعتی توضیح روزانه توضیح
1 یک دقیقه 60 یک ساعت D یک روز
5 پنج دقیقه 180 سه ساعت 2D دو روز
15 یک ربع 240 چهار ساعت 3D سه روز
30 نیم ساعت 360 شش ساعت
720 دوازده ساعت

در صورت نبودن داده در بازه درخواستی پاسخ به این صورت خواهد بود:

{
  "s": "no_data"
}

پارامترهای پاسخ

در هر درخواست بسته به بازه زمانی تعیین شده و resolution انتخابی، تعداد کندل‌های برگشتی متفاوت است. برای مثال تعداد کندل‌های 1 ساعته از تاریخ 2019/2/9 11:39:41 تا چهار ساعت بعد آن، ۴ تاست.

پارامتر توضیح نوع نمونه
s وضعیت پاسخ string ok
t شروع زمان [ ] int [1562182200]
o قیمت شروع [ ] float [150551000]
h بیشترین قیمت [ ] float [161869500]
l کمترین قیمت [ ] float [150551000]
c قیمت پایانی [ ] float [157000000]
v حجم معاملات [ ] float [9.8592626506]

آمار بازار جهانی

curl 'https://api.nobitex.ir/market/global-stats' \
  -X POST

http POST https://api.nobitex.ir/market/global-stats

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "ltc": {
        "kraken": {
            "price": "41.69"
        }
    },
    "btc": {
        "kraken": {
            "price": "5517.2"
        }
    },
    ...

    "status": "ok"
}

برای دریافت آمار بازارهای جهانی از این نوع درخواست استفاده نمایید:

معامله در بازار

ثبت سفارش جدید

curl 'https://api.nobitex.ir/market/orders/add' \
  -X POST \
  -H "Authorization: Token yourTOKENhereHEX0000000000" \
  -H "content-type: application/json" \
  --data '{"type":"buy","srcCurrency":"btc","dstCurrency":"rls","amount":"0.6","price":520000000}'
http POST https://api.nobitex.ir/market/orders/add \
  type=buy srcCurrency=btc dstCurrency=rls amount=0.6 price=520000000

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
  "status": "ok",
  "order": {
    "type": "sell",
    "srcCurrency": "Bitcoin",
    "dstCurrency": "ریال",
    "price": "520000000",
    "amount": "0.6",
    "totalPrice": "312000000.0",
    "matchedAmount": 0,
    "unmatchedAmount": "0.6",
    "id": 25,
    "status": "Active",
    "partial": false,
    "fee": 0,
    "user": "name@example.com",
    "created_at": "2018-11-28T11:36:13.592827+00:00"
  }
}

برای ثبت سفارش معامله در بازار نوبیتکس از این درخواست استفاده نمایید.

ثبت سفارش الزاماً به معنی انجام معامله نیست و بسته به نوع و قیمت سفارش و وضعیت لحظه‌ای بازار ممکن است معامله انجام شود یا نشود. با درخواست «مشاهده وضعیت سفارش» می‌توانید از وضعیت سفارش خود مطلع شوید.

سفارش‌ها پس از ثبت، پیش از ورود به دفتر معاملاتی و انجام معامله، مجدداً از نظر اعتبار مورد بررسی قرار گرفته و در صورت نامعتبر بودن، به وضعیت «رد شده» برده خواهند شد. به همین علت در صورتی که سفارش‌های شما ثبت می‌شود ولی بلافاصله به وضعیت «رد شده» تغییر حالت پیدا می‌کنند، پارامترهای ارسالی خود به ویژه مقدار و قیمت سفارش و موجودی حساب خود را دقیق‌تر بررسی نمایید.

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
type string الزامی نوع سفارش buy یا sell
execution string limit نحوه‌ی اجرای سفارش market: با قیمت بازار
limit: با قیمت معین
srcCurrency string الزامی رمزارز مبدا btc یا eth یا xrp یا ...
dstCurrency string الزامی رمزارز مقصد rls یا usdt
amount monetary الزامی مقدار رمزارز (حجم) 0.0623
price monetary الزامی قیمت واحد 1210000000

نمونه سفارش حد ضرر:

curl 'https://api.nobitex.ir/market/orders/add' \
  -X POST \
  -H "Authorization: Token yourTOKENhereHEX0000000000" \
  -H "content-type: application/json" \
  --data '{"type":"sell","srcCurrency":"doge","dstCurrency":"rls","amount":"64","execution":"stop_market","stopPrice":47500}'
http POST https://api.nobitex.ir/market/orders/add \
  type=sell srcCurrency=doge dstCurrency=rls amount=64 execution=stop_market stopPrice=47500
{
  "status": "ok",
  "order": {
    "id": 26,
    "type": "sell",
    "execution": "StopMarket",
    "market": "DOGE-RLS",
    "srcCurrency": "Dogecoin",
    "dstCurrency": "\ufdfc",
    "price": "market",
    "amount": "64",
    "param1": "47500",
    "totalPrice": "0",
    "totalOrderPrice": "3008000",
    "matchedAmount": "0",
    "unmatchedAmount": "64",
    "status": "Inactive",
    "partial": false,
    "fee": 0,
    "user": "name@example.com",
    "created_at": "2022-01-17T12:14:18.005896+00:00",
    "averagePrice": "0"
  }
}

سفارش حد ضرر

این سفارش در زمان رسیدن قیمت بازار به قیمت توقف فعال خواهد شد. کاربرد اصلی آن، جلوگیری از زیان در صورت تغییر غیرمنتظره قیمت بازار است. با ثبت این نوع سفارش می‌توان بدون نیاز به رصد مداوم بازار، در صورت خروج قیمت از بازه مد نظر، اقدام به تبدیل دارایی نمود.

پارامترهای ویژه حد ضرر

پارامتر نوع پیش‌فرض توضیحات نمونه
execution string الزامی نحوه‌ی اجرای سفارش stop_market: حد ضرر
stop_limit: حد ضرر معین
stopPrice monetary الزامی قیمت توقف 1180000000

نمونه سفارش OCO:

curl 'https://api.nobitex.ir/market/orders/add' \
  -X POST \
  -H "Authorization: Token yourTOKENhereHEX0000000000" \
  -H "content-type: application/json" \
  --data '{"type":"buy","srcCurrency":"btc","dstCurrency":"usdt","amount":"0.01","mode":"oco","price":42390,"stopPrice":42700,"stopLimitPrice":42715}'
http POST https://api.nobitex.ir/market/orders/add \
  type=buy srcCurrency=btc dstCurrency=usdt amount=0.01 mode=oco price=42390 stopPrice=42700 stopLimitPrice=42715

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
  "status": "ok",
  "orders": [
    {
      "id": 27,
      "type": "buy",
      "execution": "Limit",
      "market": "BTC-USDT",
      "srcCurrency": "Bitcoin",
      "dstCurrency": "Tether",
      "price": "42390",
      "amount": "0.01",
      "totalPrice": "0",
      "totalOrderPrice": "423.9",
      "matchedAmount": "0",
      "unmatchedAmount": "0.01",
      "status": "Active",
      "created_at": "2022-04-10T10:12:38.402795+00:00",
      "pairId": 28
    },
    {
      "id": 28,
      "type": "buy",
      "execution": "StopLimit",
      "market": "BTC-USDT",
      "srcCurrency": "Bitcoin",
      "dstCurrency": "Tether",
      "price": "42715",
      "amount": "0.01",
      "param1": "42700",
      "totalPrice": "0",
      "totalOrderPrice": "427.15",
      "matchedAmount": "0",
      "unmatchedAmount": "0.01",
      "status": "Inactive",
      "created_at": "2022-04-10T10:12:38.402795+00:00",
      "pairId": 27
    }
  ]
}

سفارش OCO

یک سفارش OCO در واقع متشکل از دو سفارش است: یک سفارش با قیمت معین، و یک سفارش با حد ضرر معین.

در صورتی که هر کدام از این دو سفارش انجام شوند، سفارش دیگر لغو خواهد شد. به عنوان مثال، اگر قیمت بازار، به قیمت سفارش معین برسد، سفارش معین اجرا می‌شود و سفارش حد ضرر، به طور خودکار لغو می‌گردد. عکس این حالت نیز برقرار است. اگر قیمت به حد ضرر تعیین شده برسد، سفارش حد ضرر اجرا شده، سفارش با قیمت معین لغو می‌گردد.

پارامترهای ویژه OCO

پارامتر نوع پیش‌فرض توضیحات نمونه
mode string الزامی حالت سفارش oco
stopPrice monetary الزامی قیمت توقف حد ضرر 1180000000
stopLimitPrice monetary الزامی قیمت حد ضرر 1179500000

حالت‌های خطا

در صورت عدم پذیرش سفارش، پاسخ به این صورت خواهد بود:

{
  "status": "failed",
  "code": "ErrorCode",
  "message": "Human readable error message"
}

در صورتی که درخواست ثبت سفارش معتبر نباشد، ممکن است یکی از این خطاها برگردانده شود. در صورت دریافت هر یک از این خطاها، آن سفارش شما ثبت نشده است و در صورت تمایل باید درخواست ثبت آن سفارش را دوباره ارسال کنید.

کد خطا توضیحات
InvalidOrderPrice قیمت سفارش (price) تعیین نشده یا اشتباه است
BadPrice در سفارش عادی: قیمت تعیین شده برای سفارش نسبت به قیمت فعلی بازار تفاوت زیادی دارد. قیمت سفارش خود را در بازه‌ی ۳۰٪ قیمت کنونی بازار تعیین کنید.
در سفارش حد ضرر: قیمت تعیین شده برای سفارش بازار نمی‌تواند از قیمت توقف بهتر باشد.
PriceConditionFailed شرط قیمت در سفارش لحاظ نشده است. شرط قیمت میان پارامترهای قیمتی و قیمت بازار تعریف می‌شود.
InvalidExecutionType نوع:مارکت/لیمیت اجرای سفارش (execution) تعیین نشده یا اشتباه است.
InvalidOrderType نوع:خرید/فروش سفارش (type) تعیین نشده یا اشتباه است.
OverValueOrder مقدار سفارش فروش (amount) یا ارزش کل سفارش خرید (amount*price) از موجودی کیف پول نوبیتکس شما کمتر است.
SmallOrder حداقل ارزش معامله رعایت نشده است. حداقل ارزش معامله برای بازارهای ریالی، 3 میلیون ریال و برای بازارهای تتری، ۱۱ تتر است و مبلغ کل سفارش (amount*price) باید بیشتر از این حداقل باشد.
DuplicateOrder سفارشی با همین مشخصات توسط کاربر شما در بازه زمانی ده ثانیه اخیر ارسال شده است.
InvalidMarketPair رمزارز مبدا (srcCurrency) یا رمزارز مقصد (dstCurrency) به درستی مقداردهی نشده است یا چنین بازاری در نوبیتکس وجود ندارد.
MarketClosed بازار مد نظر در حال حاضر به صورت موقت بسته است.
TradingUnavailable کاربر اجازه‌ی معامله ندارد، فرآیند احراز هویت خود را تکمیل نمایید.
FeatureUnavailable شما از کاربران مجاز به استفاده از امکانات آزمایشی نیستید.

نکات و ملاحظات

  1. واحدها: واحد قیمت در بازارهای ریالی به ریال (و نه تومان) می‌باشد. واحد قیمت در بازارهای تتری نیز تتر می‌باشد. واحد پارامتر مقدار (amount) بر حسب رمزارز مبدا (srcCurrency) است.
  2. سفارش مارکت: برای ثبت سفارش سریع (سفارش مارکت، سفارش به قیمت بازار)، مقدار پارامتر execution را برابر market ارسال نمایید. منظور از سفارش مارکت سفارشی است که کاربر درخواست دارد تا به بهترین قیمت موجود بازار مورد انجام قرار گیرد. ℹB - ℹI
  3. تعیین محدوده مورد انتظار قیمت: در سفارش‌های مارکت به شدت توصیه می‌شود که پارامتر price را نیز مشخص نمایید. این پارامتر در سفارش مارکت تخمین شما از قیمت بازار را نمایش می‌دهد و باعث می‌شود سفارش شما تنها تا جایی پر شود که قیمت معامله در بازه‌ی قیمتی مشخص شده باشد. برای نمونه اگر نوع سفارش خرید مارکت باشد و قیمت ۱۰۰ میلیون تومان تعیین شود، تنها تا جایی در بازار range کشیده می‌شود که قیمت زیر ۱۰۱ میلیون تومان باشد. برای پیش‌گیری از معاملات با قیمت ناخواسته به علت نوسانات دفعی بازار، پیشنهاد می‌شود که حتماً قیمت تقریبی مد نظر خود را در سفارش‌های مارکت نیز ارسال کنید. با این حال اگر اطمینان به کد خود و تبعات احتمالی این موضوع دارید، می‌توانید پارامتر price را اصلاً ارسال ننمایید که در این شرایط معامله با قیمت لحظه‌ای بازار جهانی، به هر میزان که باشد تا بازه نوسان ۱٪، انجام خواهد شد.
  4. سفارش تکراری: برای جلوگیری از ثبت سفارش تکراری ناشی از اختلالات شبکه و سرور، در صورتی که دو یا چند سفارش با پارامترهای ورودی کاملاً مشابه از جمله نوع و قیمت و مقدار، در بازه‌ی زمانی کمتر از ده ثانیه ارسال نمایید، تنها سفارش اول پذیرفته می‌شود و باقی درخواست‌های مشابه تا ده ثانیه پیام خطای DuplicateOrder دریافت می‌کنند. (غیرفعال در حالت Pro)
  5. دقت مقادیر پولی (monetary): نوع monetary که در پارامترهای amount و price به کار می‌رود، بسته به بازار هر رمزارز، تعداد رقم اعشار متغیری بین ۰ تا ۸ رقم دارد. در صورت ارسال مقادیر با ارقام اعشاری بیشتر، ارقام بی‌معنی در مقدار به پایین و در قیمت به روش بانکداری گرد خواهند شد.
    مشاهده جدول دقت‌ها

مشاهده وضعیت سفارش

curl 'https://api.nobitex.ir/market/orders/status' \
  -X POST \
  -H "Authorization: Token yourTOKENhereHEX0000000000" \
  -H "content-type: application/json" \
  --data '{"id":5684}'
http POST https://api.nobitex.ir/market/orders/status \
  id=5684

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok",
    "order": {
        "unmatchedAmount": "3.0000000000",
        "fee": "0E-10",
        "matchedAmount": "0E-10",
        "partial": false,
        "price": "8500000.0000000000",
        "created_at": "2018-11-28T12:25:22.696029+00:00",
        "user": "name@example.com",
        "id": 5684,
        "srcCurrency": "Litecoin",
        "totalPrice": "25500000.00000000000000000000",
        "type": "sell",
        "dstCurrency": "\ufdfc",
        "isMyOrder": false,
        "status": "Active",
        "amount": "3.0000000000"
    }
}

برای دریافت وضعیت سفارش از این نوع درخواست استفاده نمایید:

پارامترهای ورودی:

پارامتر نوع پیش‌فرض توضیحات نمونه
id int الزامی شناسه سفارش 5684

نکات و ملاحظات

انواع مقادیر status:

فهرست سفارش‌های کاربر

curl 'https://api.nobitex.ir/market/orders/list?srcCurrency=btc&dstCurrency=usdt&details=2' \
  -H "Authorization: Token yourTOKENhereHEX0000000000"
http GET https://api.nobitex.ir/market/orders/list \
  srcCurrency=btc dstCurrency=usdt details=2

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
  "status": "ok",
  "orders": [
    {
      "id": 173546223,
      "type": "sell",
      "execution": "Limit",
      "status": "Active",
      "srcCurrency": "Bitcoin",
      "dstCurrency": "Tether",
      "price": "9750.01",
      "amount": "0.0123",
      "matchedAmount": "0E-10",
      "averagePrice": "0",
      "fee": "0E-10"
    }
  ]
}

برای دریافت فهرست سفارش‌های خود، از این درخواست استفاده نمایید.

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
status string open وضعیت سفارش all یا open یا done یا close
type string تمام انواع سفارش نوع سفارش‌های مد نظر، خرید یا فروش sell یا buy
execution string تمام انواع سفارش گذاری‌ها لیست سفارشات با نحوه سفارش‌گذاری مشخص limit, market, stop_limit, stop_market
srcCurrency string تمام رمزارزها رمزارز مبدا btc یا eth یا xrp یا ...
dstCurrency string تمام رمزارزها رمزارز مقصد rls یا usdt
details int 1 میزان جزئیات پاسخ، اعداد بزرگ‌تر تعداد فیلدهای بیشتری را از وضعیت هر سفارش بازمی‌گرداند 1 یا 2
fromId int 1 با مشخص کردن این پارامتر سفارشات با شناسه بزرگتر از این عدد لیست خواهند شد 100

توضیحات تکمیلی پارامترهای ورودی

پارامترهای پاسخ

پارامتر نوع توضیحات نمونه
orders list of Order فهرست سفارش‌های کاربر [{...Order...}, ...]

شی Order

فیلد نوع توضیحات نمونه
type string نو ع خرید یا فروش سفارش buy یا sell
execution string نوع اجرای سفارش Limit یا Market یا StopMarket یا StopLimit
srcCurrency string رمزارز مبدا سفارش Bitcoin یا Ethereum یا TRON یا ...
dstCurrency string رمزارز مقصد سفارش یا Tether
price monetary قیمت ثبت شده برای سفارش 2900000000 یا market
amount monetary مقدار ثبت شده برای سفارش 0.023324
matchedAmount monetary مقدار پر شده از سفارش 0.012001
param1 monetary قیمت توقف در حد ضرر 2790000000

همچنین در صورتی که پارامتر details=2 باشد این فیلدها نیز برای هر سفارش بازگردانده می‌شود:

فیلد نوع توضیحات نمونه
id int شناسه سفارش 180258791
status string وضعیت فعلی سفارش New یا Active یا Inactive یا Done یا Canceled
fee monetary کارمزد سفارش تاکنون 0.00001
created_at datetime تاریخ ایجاد سفارش 2020-07-15T11:32:38.326809+00:00
averagePrice monetary میانگین قیمت اجرا شده از سفارش 2899500000

نکات و ملاحظات

  1. در پاسخ حداکثر اطلاعات هزار سفارش بازگردانده می‌شود. با استفاده از پارامترهای ورودی می‌توانید تعداد محدودتری از سفارش‌های خود را دریافت کنید. همچنین پیشنهاد می‌شود که در صورتی که تعداد زیادی سفارش باز دارید، شناسه آن‌ها را در زمان ثبت سفارش دریافت و ذخیره نمایید و به صورت مستقل با استفاده از درخواست «مشاهده وضعیت سفارش» اطلاعات هر یک را بنا به نیاز به‌روز کنید. همچنین برای اطلاع از معاملات انجام شده خود می‌توانید از درخواست فهرست معاملات کاربر استفاده نمایید.
  2. منظور از وضعیت Done سفارشی است که به صورت صد در صد اجرا شده باشد. ممکن است سفارش شما به تدریج اجرا شود، و در این حالت وضعیت آن کماکان Active می‌ماند. از فیلد matchedAmount برای تشخیص وضعیت اجرا و پر شدن سفارش استفاده کنید. همچنین ممکن است سفارش شما قبل از اجرای کامل، به دلیل درخواست «لغو سفارش» یا کمبود موجودی یا تغییر شدید قیمت بازار (در سفارش‌های مارکت) لغو شود که در این حالت وضعیت آن Canceled خواهد بود، به این معنی که به صورت صد در صد اجرا نشده است ولی می‌تواند مقدار matchedAmount آن بزرگ‌تر از صفر باشد.
  3. این API متناظر مواردی مانند Current Open Orders و All Orders در اکسچنج بایننس است.

تغییر وضعیت سفارش

curl 'https://api.nobitex.ir/market/orders/update-status' \
  -X POST \
  -H "Authorization: Token yourTOKENhereHEX0000000000" \
  -H "content-type: application/json" \
  --data '{"order":5684,"status":"canceled"}'
http POST https://api.nobitex.ir/market/orders/update-status \
  order=5684 status=canceled

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok",
    "updatedStatus": "Canceled"
}

برای تغییر وضعیت یک سفارش (لغو یا فعال‌سازی) از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
order int الزامی شناسه سفارش 5684
status string الزامی وضعیت جدید canceled

نکات و ملاحظات

  1. مقدار status میتواند از 'new' به 'active' و یا از 'active'/'inactive' به 'cancel' تغییر کند. در غیر اینصورت، درخواست رد میشود.
  2. در صورتی که سفارش درخواست شده جزئی از یک سفارش OCO انجام نشده باشد، هر دو سفارش مرتبط لغو خواهند شد.

لغو جمعی سفارشات

curl 'https://api.nobitex.ir/market/orders/cancel-old' \
  -X POST \
  -H "Authorization: Token yourTOKENhereHEX0000000000" \
  -H "content-type: application/json" \
  --data '{"execution":"limit","srcCurrency":"btc","dstCurrency":"rls","hours":2.4}'
http POST https://api.nobitex.ir/market/orders/cancel-old \
  execution=limit srcCurrency=btc dstCurrency=rls hours=2.4

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok"
}

برای لغو دسته‌جمعی سفارشات فعال از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
hours float اختیاری زمان سفارش 4.2
execution string market نحوه سفارش market یا limit یا stop_market یا stop_limit
srcCurrency string اختیاری ارز مبدا btc
dstCurrency string اختیاری ارز مقصد rls

نکات و ملاحظات

  1. مقدار hours در واقع مقدار ساعت قبل از زمان ارسال درخواست میباشد. برای مثال اگر مقدار ساعت '2' ارسال شود، سفارش های 2 ساعت قبل لغو خواهند شد.
  2. در صورتی که مقدار hours ارسال نشود، تمامی سفارشات فعال مربوط لغو خواهد شد.
  3. سفارشات حد ضرر غیرفعال غیر OCO مشمول این نوع لغو نخواهند شد.
  4. در بعضی شرایط امکان دارد به شما خطا پاسخ داده شود. این خطاها در فیلد error برگردانده میشوند.

فهرست معاملات کاربر

curl 'https://api.nobitex.ir/market/trades/list?srcCurrency=usdt&dstCurrency=rls' \
  -H "Authorization: Token yourTOKENhereHEX0000000000"
http GET https://api.nobitex.ir/market/trades/list?srcCurrency=usdt&dstCurrency=rls

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
  "status": "ok",
  "trades": [
    {
      "id": 123412,
      "orderId": 1231222,
      "srcCurrency": "Tether",
      "dstCurrency": "﷼",
      "market": "USDT-RLS",
      "timestamp": "2022-07-05T09:57:38.560820+00:00",
      "type": "sell",
      "price": "316800",
      "amount": "57.3605",
      "total": "18171806.4",
      "fee": "27257.7096"
    }
  ],
  "hasNext": false
}

برای دریافت فهرست معاملات ۳ روز اخیر خود، از این درخواست استفاده نمایید.

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
srcCurrency string اختیاری رمزارز مبدا بازار btc یا ...
dstCurrency string اختیاری رمزارز مقصد بازار rls یا usdt
fromId int اختیاری حداقل شناسه 10023

پارامترهای پاسخ

پارامتر نوع توضیحات نمونه
trades list of Trade فهرست معاملان کاربر [{...Trade...}, ...]
hasNext boolean صفحه بعدی دارد؟ false

شی Trade

فیلد نوع توضیحات نمونه
id int شناسه‌ی معامله 122545
orderId int شناسه‌ی سفارش 214534534434
srcCurrency string رمزارز مبدا معامله Bitcoin یا Ethereum یا TRON یا ...
dstCurrency string ارز مقصد معامله یا Tether
market string نماد بازار معامله USDT-RLS
timestamp string زمان انجام معامله 2022-07-05T09:57:38.560820+00:00
type string نوع خرید یا فروش buy یا sell
price monetary قیمت انجام معامله 316800
amount monetary مقدار معامله شده 57.3605
total monetary قیمت کل معامله 18171806.4
fee monetary کارمزد معامله 27257.7096

اطلاعات کاربر

پروفایل

curl 'https://api.nobitex.ir/users/profile' \
  -H "Authorization: Token yourTOKENhereHEX0000000000"
http POST https://api.nobitex.ir/users/profile \

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
  "status": "ok",
  "profile": {
    "firstName": "مهدی",
    "lastName": "رضایی",
    "nationalCode": "011122333",
    "email": "name@example.com",
    "username": "name@example.com",
    "phone": "02142719000-9012",
    "mobile": "09151111111",
    "city": "مشهد",
    "bankCards": [
      {
        "number": "6037-9900-0000-0000",
        "bank": "ملی",
        "owner": "مهدی رضایی",
        "confirmed": true,
        "status": "confirmed"
      }
    ],
    "bankAccounts": [
      {
        "id": 1999,
        "number": "0346666666666",
        "shaba": "IR460170000000346666666666",
        "bank": "ملی",
        "owner": "مهدی رضایی",
        "confirmed": true,
        "status": "confirmed"
      }
    ],
    "verifications": {
      "email": true,
      "phone": true,
      "mobile": true,
      "identity": true,
      "selfie": false,
      "bankAccount": true,
      "bankCard": true,
      "address": true,
      "city": true
    },
    "pendingVerifications": {
      "email": false,
      "phone": false,
      "mobile": false,
      "identity": false,
      "selfie": false,
      "bankAccount": false,
      "bankCard": false
    },
    "options": {
      "fee": "0.35",
      "feeUsdt": "0.2",
      "isManualFee": false,
      "tfa": false,
      "socialLoginEnabled": false
    },
    "withdrawEligible": true
  },
  "tradeStats": {
    "monthTradesTotal": "10867181.5365000000",
    "monthTradesCount": 3
  }
}

این api، اطلاعات پروفایل شما، کارت بانکی، حساب بانکی، موارد تایید شده(ایمیل، شماره تلفن، موبایل ...)، تنظمیات مربوط به پروفایل(فی تراکنش، فی مبادلات usdt و ...) و خلاصه آمار مبادلات شما را برمیگرداند.

برای دریافت پروفایل کاربر از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

برای دریافت پاسخ، کافیست توکن احراز هویت را ارسال نمایید

تولید آدرس بلاکچین

curl 'https://api.nobitex.ir/users/wallets/generate-address' \
  -X POST \
  -H "Authorization: Token yourTOKENhereHEX0000000000" \
  -H "content-type: application/json" \
  --data '{"currency":"btc"}'
http POST https://api.nobitex.ir/users/wallets/generate-address \
  currency=btc

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok",
    "address": "LRf3vuTMy4UwD5b72G84hmkfGBQYJeTwUs"
}

برای تولید آدرس بلاکچین از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
currency ارجح string الزامی (جایگزین wallet) رمزارز کیف btc
wallet قدیمی string (در نبود currency الزامی) شناسه کیف پول 4159

افزودن کارت بانکی

curl 'https://api.nobitex.ir/users/cards-add' \
  -X POST \
  -H "Authorization: Token yourTOKENhereHEX0000000000" \
  -H "content-type: application/json" \
  --data '{"number":"5041721011111111","bank":"رسالت"}'
http POST https://api.nobitex.ir/users/cards-add \
  number=5041721011111111 bank=رسالت

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok"
}

برای افزودن کارت بانکی جدید از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
number string الزامی شماره کارت 5041721011111111
bank string الزامی نام بانک رسالت

افزودن حساب بانکی

curl 'https://api.nobitex.ir/users/accounts-add' \
  -X POST \
  -H "Authorization: Token yourTOKENhereHEX0000000000" \
  -H "content-type: application/json" \
  --data '{"number":"5041721011111111","shaba":"IR111111111111111111111111","bank":"رسالت"}'
http POST https://api.nobitex.ir/users/accounts-add \
  number=5041721011111111 shaba=IR111111111111111111111111 bank=رسالت

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok"
}

برای افزودن حساب بانکی جدید از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
number string الزامی شماره حساب 5041721011111111
shaba string الزامی شماره شبا IR111111111111111111111111
bank string الزامی نام بانک رسالت

محدودیت های کاربر

curl 'https://api.nobitex.ir/users/limitations' \
  -X GET \
  -H "Authorization: Token yourTOKENhereHEX0000000000" \
  -H "content-type: application/json" \
http GET https://api.nobitex.ir/users/limitations

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
  "status": "ok",
  "limitations": {
    "userLevel": "level2",
    "features": {
      "crypto_trade": false,
      "rial_trade": false,
      "coin_deposit": false,
      "rial_deposit": false,
      "coin_withdrawal": false,
      "rial_withdrawal": false
    },
    "limits": {
      "withdrawRialDaily": {
        "used": "0",
        "limit": "900000000"
      },
      "withdrawCoinDaily": {
        "used": "0",
        "limit": "2000000000"
      },
      "withdrawTotalDaily": {
        "used": "0",
        "limit": "2000000000"
      },
      "withdrawTotalMonthly": {
        "used": "0",
        "limit": "30000000000"
      }
    }
  }
}

توضیحات

کاربران در نوبیتکس بر اساس سطح کاربری خود، محدودیت هایی در برداشت، واریز و مبادلات خود دارند. هر کاربر نسبت به نیاز خود و میزان مبادلاتی که دارد میتواند با ارائه مدارک مورد نیاز ، سطح کاربری خود را پس از احراز هویت و تایید مدراک، ارتقا دهد. اطلاعات نمایش داده شده در خروجی api شامل همین محدودیت ها میباشد:

برای دریافت محدودیت های کاربر از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامترهای خروجی

features: شرایط حساب کاربری

limits: محدودیت های حساب کاربری

نکات و ملاحظات

  1. تمامی مبالغ در خروجی به ریال هستند.
  2. برای اطلاع از جزئیات سطوح کاربری، میزان محدودیت ها، مدارک مورد نیاز هر سطح و توضیحات کامل هر سطح به سطوح حساب کاربری در نوبیتکس مراجعه کنید. #اطلاعات مالی کاربر

لیست کیف پول ها

curl 'https://api.nobitex.ir/users/wallets/list' \
  --header "Authorization: Token yourTOKENhereHEX0000000000"
http GET https://api.nobitex.ir/users/wallets/list \
  Authorization=Token yourTOKENhereHEX0000000000

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok",
    "wallets": [
        {
            "activeBalance": "10.2649975000",
            "blockedBalance": "0",
            "user": "name@example.com",
            "currency": "ltc",
            "id": 4159,
            "balance": "10.2649975000",
            "rialBalance": 51322935,
            "rialBalanceSell": 52507310,
            "depositAddress": null
        },
        ...
    ]
}

برای دریافت لیست کیف پول های کاربر از این نوع درخواست استفاده نمایید:

نکات و ملاحظات

  1. کیف پول یک رمزارز در صورتی برای کاربر ایجاد می‌شود که کاربر سفارشی در بازار آن رمزارز ثبت کرده و یا آدرس واریز برای آن ایجاد کرده باشد. این ویژگی در رمزارزهای آتی نوبیتکس نمایش خواهد یافت. برای رمزارزهای قدیمی کاربران سابق، همه کیف‌پول‌های از پیش موجود کاربر باقی خواهند ماند.

  2. در برخی از موارد به دلیل کنترل بار ترافیک ورودی این سرویس، ممکن است پاسخ مورد انتظار دریافت نگردد، در این حالت می بایست مجددا فراخوانی را انجام داد و یا اینکه از این سرویس برای دریافت لیست کیف پول ها استفاده نمائید

لیست کیف پول ها (انتخابی)

curl 'https://api.nobitex.ir/v2/wallets?currencies=rls,btc' \
  --header "Authorization: Token yourTOKENhereHEX0000000000"
http GET https://api.nobitex.ir/v2/wallets \
  Authorization=Token yourTOKENhereHEX0000000000
  currencies=rls,btc

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok",
    "wallets": {
        "RLS": {
            "id": 133777,
            "balance": "0E-10",
            "blocked": "0"
        },
        "BTC": {
            "id": 133778,
            "balance": "0E-10",
            "blocked": "0"
        }
    }
}

برای دریافت لیست کیف پول های کاربر از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
currencies string اختیاری نوع کیف پول(ارز)، به صورت رشته ای از ارزهای جداشده با کاما rls,btc

نکات و ملاحظات

کیف پول یک رمزارز در صورتی برای کاربر ایجاد می‌شود که کاربر سفارشی در بازار آن رمزارز ثبت کرده و یا آدرس واریز برای آن ایجاد کرده باشد. این ویژگی در رمزارزهای آتی نوبیتکس نمایش خواهد یافت. برای رمزارزهای قدیمی کاربران سابق، همه کیف‌پول‌های از پیش موجود کاربر باقی خواهند ماند.

موجودی

curl 'https://api.nobitex.ir/users/wallets/balance' \
  -X POST \
  --header "Authorization: Token yourTOKENhereHEX0000000000" \
  --data '{"currency":"ltc"}'
http POST https://api.nobitex.ir/users/wallets/balance \
  currency=ltc

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "balance": "10.2649975000",
    "status": "ok"
}

برای دریافت موجودی کیف پول های خود در نوبیتکس (شامل کیف پول ریالی و کیف پول های رمز ارزی) از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
currency string الزامی نوع کیف پول(ارز) ltc

نکات و ملاحظات

  1. مقدار بازگشتی برای موجودی، یک عدد است که به صورت string برگردانده میشود. این مقدار می‌تواند اعداد اعشاری زیادی داشته باشد.
  2. اگر قصد محاسبات مهمی بر روی این اعداد را دارید، پیشنهاد ما این است که از انواع fixed precision برای نگهداری این اعداد استفاده کنید.

لیست تراکنش‌ها

curl 'https://api.nobitex.ir/users/wallets/transactions/list?wallet=4159' \
  -H "Authorization: Token yourTOKENhereHEX0000000000"
http GET https://api.nobitex.ir/users/wallets/transactions/list \
  wallet=4159

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok",
    "transactions": [
        {
            "currency": "ltc",
            "created_at": "2018-10-17T09:41:08.519151+00:00",
            "calculatedFee": "0",
            "id": 99050,
            "amount": "4.3802000000",
            "description": "خرید 4.400 LTC به قیمت واحد ﷼7450000"
        },
        {
            "currency": "ltc",
            "created_at": "2018-10-04T13:05:01.384902+00:00",
            "calculatedFee": "0",
            "id": 96541,
            "amount": "-1.0000000000",
            "description": "Withdraw to \"Lgn1zc77mEjk72KvXPqyXq8K1mAfcDE6YR\""
        },
        ...
    ],
    "hasNext": true
}

برای دریافت آخرین آمار بازار نوبیتکس از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
wallet int الزامی شناسه کیف پول(id) 4159

لیست واریزها

curl 'https://api.nobitex.ir/users/wallets/deposits/list?wallet=4159' \
  -H "Authorization: Token yourTOKENhereHEX0000000000"
http GET https://api.nobitex.ir/users/wallets/deposits/list \
  wallet=4159

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok",
    "deposits": [
        {
            "txHash": "c5d84268a0bf02307b5a0460a68b61987a9b3009d3a82a817e41558e619ec1d2",
            "address": "32KfyTNh162UoKithfDrWHZPYq5uePGmf7",
            "confirmed": true,
            "transaction": {
                "id": 10,
                "amount": "3.0000000000",
                "currency": "btc",
                "description": "Deposit - address:36n452uGq1x4mK7bfyZR8wgE47AnBb2pzi, tx:c5d84268a0bf02307b5a0460a68b61987a9b3009d3a82a817e41558e619ec1d2",
                "created_at": "2018-11-06T03:56:18+00:00",
                "calculatedFee": "0"
            },
            "currency": "Bitcoin",
            "blockchainUrl": "https://btc.com/c5d84268a0bf02307b5a0460a68b61987a9b3009d3a82a817e41558e619ec1d2",
            "confirmations": 2,
            "requiredConfirmations": 3,
            "amount": "3.0000000000"
        }
    ],
    "hasNext": true
}

برای دریافت لیست واریزها از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
wallet string all شناسه کیف پول 4159

نکات و ملاحظات

برداشت

ثبت درخواست برداشت

curl -X POST 'https://api.nobitex.ir/users/wallets/withdraw' \
  -H 'Authorization: Token yourTOKENhereHEX0000000000' \
  -H 'X-TOTP: 123456' \
  -H 'Content-Type: application/json' \
  --data '{"wallet": 3456, "invoice": "lnbc123m1pskcu80pp5qqqsyqcyq5rqwz..."}'
http POST https://api.nobitex.ir/users/wallets/withdraw \
  wallet=3456 invoice=lnbc123m1pskcu80pp5qqqsyqcyq5rqwz...

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
  "status": "ok",
  "withdraw": {
    "id": 432,
    "createdAt": "2021-12-11T10:13:42.957103+00:00",
    "status": "New",
    "amount": "0.0123",
    "currency": "btc",
    "network": "BTCLN",
    "invoice": "lnbc123m1pskcu80pp5qqqsyqcyq5rqwz...",
    "address": "SaMpLeWaLlEtAdDrEsS",
    "tag": "123456",
    "wallet_id": 3456,
    "blockchain_url": "https://nobitex.ir/receipt/Bitcoin/ewd23d...",
    "is_cancelable": true
  }
}

پس از ثبت درخواست برداشت، یک کد تایید یکبارمصرف به کاربر ایمیل یا پیامک می‌شود.

برای ثبت درخواست برداشت از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
wallet int الزامی شناسه کیف پول کاربر 3456
network string اختیاری شبکه انتقال1 "BTCLN"
invoice string اختیاری صورت‌حساب2 "lnbc123m1pskcu80pp5qqqsyqcyq5rqwz..."
amount monetary اختیاری مقدار3 "0.123"
address string اختیاری آدرس مقصد4 "SaMpLeWaLlEtAdDrEsS"
explanations string اختیاری توضیحات "sample explanation"
noTag boolean false بدون تگ5 false
tag string اختیاری تگ انتقال6 "123456"
  1. شبکه انتقال: مقادیر قابل قبول است. در مواردی که چند شبکه برداشت برای رمزارز درخواستی پشتیبانی می‌شود، می‌توان شبکه انتقال را تعیین نمود.
  2. صورت‌حساب: در انتقال‌های شبکه BTCLN الزامی است. در صورت وجود invoice پارامترهای amount و address از آن استخراج شده و در بدنه درخواست بلااستفاده خواهند شد. شبکه صورت‌حساب باید با network در صورت مشخص شدن در درخواست مطابقت داشته باشد.
  3. مقدار: در صورتی که بدون invoice درخواست برداشت ثبت می‌کنید، الزامی می‌شود.
  4. آدرس مقصد: برای برداشت‌های ریالی شناسه حساب بانکی تایید شده کاربر جهت دریافت وجه و برای برداشت‌های رمزارزی آدرس کیف پول مقصد می‌باشد. در صورتی که از invoice برای برداشت استفاده می‌کنید، بلااستفاده خواهد شد.
  5. بدون تگ: برای برداشت از شبکه‌های که تگ انتقال در آن‌ها ضروری است بدون درج تگ، مقدار آن را true قرار دهید.
  6. تگ انتقال: در شبکه‌های بدون فعال کردن noTag الزامی است.

حالت‌های خطا

در صورتی که درخواست برداشت معتبر نباشد، ممکن است یکی از این خطاها برگردانده شود. در صورت دریافت هر یک از این خطاها، درخواست شما ثبت نشده است و در صورت تمایل باید درخواست را دوباره ارسال کنید.

کد خطا توضیحات
InvalidCurrency بازار رمزارز مورد نظر غیرفعال است
WithdrawUnavailable کاربر محدودیت برداشت دارد
WithdrawCurrencyUnavailable امکان برداشت این رمزارز (در این شبکه) وجود ندارد
CoinWithdrawDisabled امکان برداشت این رمزارز موقتا غیرفعال شده است مثال: BTCWithdrawDisabled
InvalidAddressTag تگ معتبر نمی باشد
MissingAddressTag تگ فرستاده نشده یا اشتباه است
ExchangeRequiredTag تگ در این بازار الزامی می باشد
RedundantTag تگ ارسالی اضافی می باشد
Invalid2FA کد دوعاملی ارسالی اشتباه است
WithdrawAmountLimitation مقدار درخواست شده بیشتر از سقف محدودیت های کاربر (روزانه، ماهانه و ...) می باشد
InsufficientBalance موجودی ناکافی است
WithdrawLimitReached امکان ثبت درخواست به دلیل «محدودیت در تعداد درخواست با وضعیت مشابه» وجود ندارد
AmountTooLow مقدار درخواستی از حداقل مقدار مجاز این بازار(شبکه) کمتر می باشد
AmountTooHigh مقدار درخواستی از حداکثر مقدار مجاز این بازار(شبکه) بیشتر می باشد
InvalidMobileNumber کاربر موبایل تایید شده ندارد
ShabaWithdrawCannotProceed امکان ثبت درخواست برداشت ریالی بیشتر از حدمجاز روزانه وجود ندارد

نکات و ملاحظات

  1. این درخواست نیاز به شناسایی دوعاملی دارد.
  2. کاربر درخواست دهنده بایستی اجازه برداشت از کیف پول خود را داشته باشد. (مثلا دارای حداقل سطح مجاز برای برداشت و شماره تماس تایید شده بوده و سقف برداشت مجاز روزانه و ماهانه خود را رد نکرده باشد و شرایط و پیشنیازات ذکر شده در مقررات نوبیتکس را رعایت کرده باشد.)

تایید درخواست برداشت

curl -X POST 'https://api.nobitex.ir/users/wallets/withdraw-confirm' \
  -H 'Authorization: Token yourTOKENhereHEX0000000000' \
  -H 'Content-Type: application/json' \
  --data '{"withdraw": 432, "otp": 623005}'
http POST https://api.nobitex.ir/users/wallets/withdraw-confirm \
  withdraw=432 otp=623005

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
  "status": "ok",
  "withdraw": {
    "id": 432,
    "createdAt": "2021-12-11T10:13:42.957103+00:00",
    "status": "Verified",
    "amount": "0.0123",
    "currency": "btc",
    "network": "BTCLN",
    "invoice": "lnbc123m1pskcu80pp5qqqsyqcyq5rqwz...",
    "address": "SaMpLeWaLlEtAdDrEsS",
    "tag": "123456",
    "wallet_id": 3456,
    "blockchain_url": "https://nobitex.ir/receipt/Bitcoin/ewd23d...",
    "is_cancelable": true
  }
}

برای تایید درخواست برداشت با ارسال رمز یکبارمصرف از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
withdraw int الزامی شناسه درخواست برداشت 432
otp int الزامی رمز یکبارمصرف ارسال شده 623005

نکات و ملاحظات

برای تایید برداشت باید کد ارسال شده به شماره تلفن همراه یا ایمیل حساب کاربری خود را از طریق کد به صورت خودکار دریافت کنید و به این API ارسال نمایید. همچنین امکان استفاده از آی‌پی اختصاصی و آدرس‌بوک به زودی فراهم خواهد شد.

فهرست برداشت‌ها

curl 'https://api.nobitex.ir/users/wallets/withdraws/list' \
  -H 'Authorization: Token yourTOKENhereHEX0000000000'
http GET https://api.nobitex.ir/users/wallets/withdraws/list

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
  "status": "ok",
  "withdraws": [
    {
      "id": 432,
      "createdAt": "2021-12-11T10:13:42.957103+00:00",
      "status": "Canceled",
      "amount": "0.0123",
      "currency": "btc",
      "network": "BTCLN",
      "invoice": "lnbc123m1pskcu80pp5qqqsyqcyq5rqwz...",
      "address": "SaMpLeWaLlEtAdDrEsS",
      "tag": "123456",
      "wallet_id": 3456,
      "blockchain_url": "https://nobitex.ir/receipt/Bitcoin/ewd23d...",
      "is_cancelable": true
    },
    {
      "id": 238,
      "createdAt": "2020-09-19T14:17:23.441723+00:00",
      "status": "Done",
      "amount": "1000000",
      "currency": "rls",
      "network": "FIAT_MONEY",
      "invoice": null,
      "address": "\u062a\u062c\u0627\u0631\u062a: IR140180000000003333333333",
      "tag": null,
      "wallet_id": 3451,
      "blockchain_url": null,
      "is_cancelable": true
    },
    {
      "id": 239,
      "createdAt": "2018-10-04T12:59:38.196935+00:00",
      "status": "Done",
      "amount": "1",
      "currency": "ltc",
      "network": "LTC",
      "address": "Lgn1zc77mEjk72KvX...",
      "tag": null,
      "wallet_id": 3454,
      "blockchain_url": "https://live.blockcypher.com/ltc/tx/c1ed4229e598d4cf...",
      "is_cancelable": false
    }
  ],
  "hasNext": true
}

برای دریافت لیست آخرین برداشت‌ها از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
wallet string all شناسه کیف پول کاربر 3456

مشاهده برداشت

curl 'https://api.nobitex.ir/withdraws/433' \
  -H 'Authorization: Token yourTOKENhereHEX0000000000'
http GET https://api.nobitex.ir/withdraws/433

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
  "status": "ok",
  "withdraw": {
    "id": 433,
    "createdAt": "2021-12-14T06:53:11.593812+00:00",
    "status": "Processing",
    "amount": "0.123",
    "currency": "eth",
    "network": "BSC",
    "invoice": null,
    "address": "SaMpLeWaLlEtAdDrEsS",
    "tag": null,
    "wallet_id": 3458,
    "blockchain_url": "https://etherscan.io/tx/tx111111",
    "is_cancelable": true
  }
}

برای مشاهده وضعیت یک درخواست برداشت از این نوع درخواست استفاده نمایید:

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
WITHDRAW int الزامی شناسه درخواست برداشت 433

امنیت

سابقه ورود

curl 'https://api.nobitex.ir/users/login-attempts' \
  -H "Authorization: Token yourTOKENhereHEX0000000000"
http POST https://api.nobitex.ir/users/login-attempts \

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok",
    "attempts": [
        {
            "ip": "46.209.130.106",
            "username": "name@example.com",
            "status": "Successful",
            "createdAt": "2018-11-28T14:16:08.264308+00:00"
        },
        ...
    ]
}

برای دریافت سابقه ورود از این نوع درخواست استفاده نمایید:

فعالسازی لغو اضطراری

curl 'https://api.nobitex.ir/security/emergency-cancel/activate' \
  -X GET \
  -H "Authorization: Token e9282e56c83f93eb077043e5ad8b6cf5b3ff7568"
http GET https://api.nobitex.ir/security/emergency-cancel/activate \
  Authorization: Token 4928f7a7d00b3sc1efaa8dda2fc7a9tf905cc69

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "ok",
    "cancelCode": {
        "code": "seJlef35L3"
    }
}

جهت فعالسازی امکان لغو اضطراریِ درخواست های برداشت از این درخواست استفاده نمائید. پس از فعالسازی این امکان، پیامک و ایمیل ارسالی پس از ثبت درخواست برداشت، حاوی لینکی خواهد بود که شما میتوانید با استفاده از آن در صورتی که درخواست برداشت توسط شما ثبت نشده است، در کمترین زمان ممکن و بدون نیاز به لاگین، درخواست های برداشت خود را لغو نمایید.

نکات و ملاحظات

توجه داشته باشید: در صورتی که درخواست برداشت شما توسط این امکان لغو گردد، امکان ثبت درخواست برداشت تا ۷۲ ساعت برای شما غیرفعال خواهد شد.

طرح معرفی دوستان

نوبیتکس طرحی به نام معرفی دوستان در نظر گرفته است که از طریق آن هم به گسترش نوبیتکس کمک می‌کنید و هم از مزایای آن بهره‌مند می‌شوید. براساس این طرح شما می‌توانید دوستان خود را با لینک اختصاصی خود به نوبیتکس دعوت کنید و درصدی از کارمزد معاملات آن‌ها را به عنوان پاداش دریافت نمایید. برای اطلاعات بیشتر به صفحه قوانین طرح معرفی دوستان مراجعه کنید.

معرفی دوستان با استفاده از ایجاد «کد دعوت» انجام می‌شود. هر کاربر نوبیتکس می‌تواند برای خود یک یا چند کد دعوت بسازد. کدهای دعوت معمولاً شامل شش رقم هستند ولی می‌توانند طول متفاوتی داشته باشند یا حتی رشته‌های دلخواه باشند. در زمان ساخت هر کد دعوت می‌توان سهم کاربر معرف و کاربر دعوت شده از کارمزد اهدایی را مشخص نمود.

با استفاده از «فهرست کدهای دعوت» می‌توانید فهرستی از کدهای دعوت فعلی خود را دریافت نمایید. به همراه این فهرست، میزان سود شما و برخی دیگر از آمار مربوط به کاربران ثبت‌نامی با آن کد دعوت ارسال می‌شود. اگر هنوز کد دعوتی ندارید، برای شروع استفاده از طرح معرفی دوستان می‌توانید با استفاده از «ایجاد کد دعوت»، یک کد دعوت بسازید.

فهرست کدهای دعوت

curl -X GET 'https://api.nobitex.ir/users/referral/links-list' \
  --header 'Authorization: Token yourTOKENhereHEX0000000000'
http --follow --timeout 3600 GET https://api.nobitex.ir/users/referral/links-list \
 Authorization:'Token yourTOKENhereHEX0000000000'

پارامترهای پاسخ

پارامتر نوع توضیحات نمونه
links list of ReferralLink فهرست کدهای دعوت این کاربر [{...ReferralLink...}, ...]
فیلد نوع توضیحات نمونه
id int شناسه یکتای لینک 1001
referralCode string کد دعوت 40404
createdAt datetime تاریخ ایجاد کد 2020-07-15T11:32:38.326809+00:00
userShare int سهم کاربر معرف از کارمزد معاملات کاربر دعوت شده 20
friendShare int سهم کاربر دعوت شده از کارمزد معاملات خود 10
description string توضیحات اختیاری کاربر برای این کد Shared on Instagram page X
statsRegisters int آمار: کاربران ثبت‌نام کرده با این کد 20
statsTrades int آمار: مجموع تعداد معاملات کاربران ثبت‌نام کرده با این کد 240
statsProfit monetary: IRR آمار: مجموع ریالی درآمد کاربر از این کد دعوت 3200000

ایجاد کد دعوت

curl -X GET 'https://api.nobitex.ir/users/get-referral-code' \
--header 'Authorization: Token yourTOKENhereHEX0000000000'
http --follow --timeout 3600 GET https://api.nobitex.ir/users/get-referral-code \
 Authorization:'Token yourTOKENhereHEX0000000000'

برای ایجاد یک کد دعوت جدید برای کاربر، از «ایجاد کد دعوت» استفاده نمایید.

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
friendShare int 0 سهم کارمزد اهدایی به دوست دعوت شده با این کد 10

حالت‌های خطا

کد خطا توضیحات
InvalidGivebackShare سهم کارمزد دوست قابل قبول نیست. پارامتر friendShare را بررسی کنید.
TooManyReferralLinks سهمیه ۳۰ تایی کدهای دعوت قابل ساخت برای هر کاربر به پایان رسیده است.
ReferralCodeUnavailable امکان ایجاد کد دعوت در حال حاضر وجود ندارد.
ReferralCodeExists خطایی در ثبت کد دعوت رخ داده است.

وضعیت دعوت کاربر

curl -X GET 'https://api.nobitex.ir/users/referral/referral-status' \
--header 'Authorization: Token yourTOKENhereHEX0000000000'
http --follow --timeout 3600 GET https://api.nobitex.ir/users/referral/referral-status \
 Authorization:'Token yourTOKENhereHEX0000000000'

برای اطلاع از این که کاربر فعلی توسط کاربر دیگری به نوبیتکس دعوت شده است یا خیر، از «وضعیت دعوت کاربر» استفاده نمایید.

پارامترهای پاسخ

پارامتر نوع توضیحات نمونه
hasReferrer boolean آیا کاربر توسط کاربر دیگری دعوت شده است؟ true

ثبت معرف کاربر

curl -X GET 'https://api.nobitex.ir/users/referral/set-referrer' \
  --header 'Authorization: Token yourTOKENhereHEX0000000000'
http --follow --timeout 3600 GET https://api.nobitex.ir/users/referral/set-referrer \
 Authorization:'Token yourTOKENhereHEX0000000000'

کد دعوت باید در زمان ثبت‌نام توسط کاربر وارد شده یا با استفاده از پیوند دعوت به صورت خودکار پر شود. با این حال تا ۲۴ ساعت پس از ثبت‌نام نیز امکان ثبت معرف توسط کاربر با استفاده از این API وجود دارد. منظور از کاربر معرف، کاربری است که کاربر فعلی را دعوت نموده است.

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
referrerCode string الزامی کد دعوت کاربر دعوت کننده 40404

حالت‌های خطا

کد خطا توضیحات
ReferrerChangeUnavailable بیش از ۲۴ ساعت از ثبت‌نام کاربر گذشته است و تعریف معرف دیگر ممکن نیست.

احراز هویت

روش پیشنهادی دریافت توکن

روش پیشنهادی نوبیتکس برای دریافت توکن استفاده از API، دریافت آن از پنل کاربری است. برای دریافت توکن می‌توانید با مراجعه به پنل کاربری خود در نوبیتکس، از بخش پروفایل وارد صفحه تنظیمات شده و توکن خود را دریافت نمایید. در صورتی که گزینه «مرا به خاطر بسپار» را در هنگام ورود به نوبیتکس انتخاب کرده باشید، این توکن تا ۳۰ روز یا زمان لاگ‌اوت شما از نوبیتکس معتبر خواهد ماند.

در ادامه روش دریافت خودکار توکن با استفاده از کد توضیح داده می‌شود. معمولاً دریافت خودکار توکن ضروری نیست و روش پیشنهادی ما برای اغلب کاربران دریافت مستقیم توکن از پنل کاربری است. تنها در صورتی که با مخاطرات ذخیره گذرواژه خود در کد و روش‌های امن این کار آشنا هستید، در استفاده از API مهارت دارید، و از طرفی نیاز به دریافت کاملاً خودکار توکن دارید، از API دریافت توکن استفاده نمایید.

همین طور پیشنهاد می‌شود که گام‌های اولیه توسعه کد خود را با دریافت توکن از پنل انجام دهید تا با فرآیند استفاده از API نوبیتکس بیشتر آشنا شوید و تنها در صورت نیاز و در گام نهایی‌سازی کد خود اقدام به خودکارسازی دریافت توکن نمایید. لازم به توضیح است که به دلیل مسائل امنیتی مانند شناسایی دوعاملی و کپچا و ... برای دریافت خودکار توکن باید به دقت مستندات این بخش را مطالعه نمایید.

ورود - دریافت توکن

برای دریافت توکن، از این کد استفاده کنید:

curl 'https://api.nobitex.ir/auth/login/' \
  -X POST \
  -H "Content-Type: application/json" \
  --data $'{"username":"name@example.com","password":"secret-password-1234","captcha":"api"}'
http POST https://api.nobitex.ir/auth/login/ \
  username=name@example.com password=secret-password-1234 captcha=api

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "status": "success",
    "key": "db2055f743c1ac8c30d23278a496283b1e2dd46f",
    "device": "AlRyansW"
}

دریافت توکن به صورت خودکار و با ارسال درخواست به /auth/login/ صورت می‌گیرد. این تنها APIی است که نیاز دارید به آن نام کاربری و رمز عبور خود را ارسال کنید. تمامی دیگر APIها از توکن به جای رمز عبور برای احراز هویت استفاده می‌کنند. توکن‌های صادر شده بعد از چهار ساعت منقضی می‌شوند و باید مجددا با ارسال درخواست لاگین، توکن جدیدی دریافت کنید. در صورتی که نیاز به ایجاد توکن‌های بلند مدت دارید، از پارامتر remember=yes استفاده کنید تا توکن ایجاد شده به مدت سی روز معتبر بماند. توجه داشته باشید، در صورتی که احراز هویت دو مرحله‌ای را فعال کرده باشید، می بایست رمز یک‌بار مصرف را نیز ارسال نمایید. توضیحات دقیق‌تر را از اینجا مطالعه فرمایید.

پارامترهای ورودی

پارامتر نوع پیش‌فرض توضیحات نمونه
username string الزامی ایمیل کاربر name@example.com
password string الزامی گذرواژه کاربر secret-password-1234
remember string no آیا توکن بلند مدت صادر شود؟ yes یا no
captcha string الزامی کپچا api

نکات و ملاحظات

  1. دقت نمایید که انتهای آدرس url ارسال درخواست، حتماً باید / گذاشته شود.
  2. توکن‌های دریافت شده از این روش، بعد از اتمام زمان اعتبار یا انجام عملیات لاگ‌اوت منقضی می‌شوند. زمان پیش‌فرض اعتبار توکن چهار ساعت است که می‌توانید با استفاده از پارامتر remember توکن‌هایی با زمان اعتبار یک ماه دریافت نمایید.
  3. برای لاگین و دریافت توکن، حتماً باید از آی‌پی ایران درخواست ارسال شود. در غیر این صورت، خطای 429 برگردانده می‌شود. بدیهی است که استفاده از هر VPN یا VPS خارجی، منجر به این خطا خواهد شد. در حالت استفاده از آی‌پی ایران می‌توانید مقدار کپچا را در درخواست برابر api مقداردهی کنید.
  4. در صورت مشکل در دریافت توکن، می‌توانید مطابق روش پیشنهادی دریافت توکن از توکن‌‌های موجود در تنظیمات پروفایل خود استفاده کنید.

سوالات متداول دریافت توکن

آیا نوبیتکس توکن بلند مدت هم ارائه می‌دهد؟

در نوبیتکس می‌توانید توکن‌هایی با تاریخ انقضای حداکثر یک ماه دریافت نمایید. در صورتی که گزینه «مرا به خاطر بسپار» را در زمان لاگین به سایت نوبیتکس انتخاب نمایید، توکنی که در بخش پروفایل دریافت می‌کنید برای مدت یک ماه معتبر خواهد بود. در صورتی که از API دریافت توکن استفاده می‌کنید، می‌توانید از پارامتر remember استفاده کنید. مد نظر داشته باشید که در صورت انجام عملیات لاگ‌اوت از حساب خود در سایت یا API توکن شما دیگر معتبر نخواهد ماند.

من با استفاده از گوگل در نوبیتکس ثبت نام کرده‌ام. چگونه می‌توانم با API کار کنم؟

روش پیشنهادی دریافت توکن، دریافت آن از پنل کاربری است و با این روش تمام کاربران مستقل از روش ورود به نوبیتکس می‌توانند توکن خود را مشاهده و دریافت نمایند. کاربرانی که با استفاده از حساب گوگل در نوبیتکس ثبت‌نام کرده باشند و بخواهند از روش خودکار دریافت توکن استفاده کنند، می‌توانند از امکان فراموشی رمز عبور استفاده کرده و رمز جدید برای حساب خود تعیین و پس از آن اقدام به استفاده از API نمایند.

در هنگام لاگین با خطای MissingCaptcha روبرو شده‌ام. مشکل چیست؟

مطابق روش پیشنهادی دریافت توکن، برای دریافت توکن به پنل کاربری خود در سایت، بخش «پروفایل: تنظیمات» مراجعه نمایید. اگر از روش خودکار دریافت توکن استفاده می‌کنید، مستندات مربوطه را با دقت مطالعه نمایید.

در هنگام لاگین با خطای MissingOTP روبرو شده ام. چگونه این مشکل حل میشود؟

هنگامی که شناسایی دوعاملی حساب شما فعال باشد، در هنگام استفاده از API نیز می‌بایست این حالت حفظ شده و رمز یکبار مصرف ارسال گردد. این کار از طریق ارسال این رمز با استفاده از پارامتر X-TOTP امکان‌پذیر خواهد بود. تولید کد دوعاملی با استفاده از فرمول استانداردی در کد ممکن است.

خروج - سوزاندن توکن

برای خروج یا سوزاندن توکن، از این کد استفاده کنید:

curl -X POST 'https://api.nobitex.ir/auth/logout/' \
--header 'Authorization: Token yourTOKENhereHEX0000000000'
POST /auth/logout/ HTTP/1.1
Host: api.nobitex.ir
Authorization: Token yourTOKENhereHEX0000000000

در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:

{
    "detail": "خروج با موفقیت انجام شد.",
    "message": "خروج با موفقیت انجام شد."
}

سایر

تنظیمات سیستم

curl 'https://api.nobitex.ir/v2/options'
http GET https://api.nobitex.ir/v2/options

ساختار کلی پاسخ به صورت زیر خواهد بود. کلیدهای موجود در هر بخش در مستندات توضیح داده شده‌اند.

{
    "status": "ok",
    "features": {
        "fcmEnabled": true,
        "chat": "livechat",
        "walletsToNet": false,
        "autoKYC": true,
        "enabledFeatures": [
            "PriceAlert",
            "StopLoss",
            "GiftCard",
            "OCO"
        ],
        "betaFeatures": []
    },
    "coins": [
        {
            "coin": "rls",
            "name": "Rial",
            "defaultNetwork": "FIAT_MONEY",
            "displayPrecision": "10",
            "networkList": {
                "FIATMONEY": {
                    "addressRegex": "",
                    "coin": "rls",
                    "depositEnable": true,
                    "isDefault": true,
                    "minConfirm": 0,
                    "name": "FIAT",
                    "network": "FIAT_MONEY",
                    "withdrawEnable": true,
                    "withdrawFee": "4_000_0.00000000",
                    "withdrawIntegerMultiple": "0.10000000",
                    "withdrawMax": "500_000_000_0.00000000",
                    "withdrawMin": "15_000_0.00000000"
                }
            },
            "stdName": "﷼"
        },
        ... Other Coins Options
    ],
    "nobitex": {
        "allCurrencies": [
            "rls",
            "btc",
            ... Other currencies
        ],
        "activeCurrencies": [
            "rls",
            "btc",
            "eth",
            "ltc",
            ... Other active currencies
        ],
        "xchangeCurrencies": [],
        "topCurrencies": [
            "btc",
            "eth",
            "usdt",
            "doge",
            "shib",
            "trx",
            "ada",
            "ltc",
            "xrp"
        ],
        "testingCurrencies": [
            "hbar"
        ],
        "withdrawLimits": {
            "normal": {
                "dailyCoin": "0",
                "dailyRial": "0",
                "dailySummation": "0",
                "monthlySummation": "0"
            },
            "level0": {
                "dailyCoin": "0",
                "dailyRial": "0",
                "dailySummation": "0",
                "monthlySummation": "0"
            },
            "44": {
                "dailyCoin": "1000000000",
                "dailyRial": "200000000",
                "dailySummation": "1000000000",
                "monthlySummation": "15000000000"
            },
            ... Other withdraw options
        },
        "minOrders": {
            "rls": "3000000",
            "usdt": "11",
            "2": "3000000",
            "13": "11"
        },
        "amountPrecisions": {
            "BTCIRT": "0.000001",
            "BTCUSDT": "0.000001",
            "ETHIRT": "0.00001",
            ... Other amount precisions
        },
        "pricePrecisions": {
            "BTCIRT": "10",
            "BTCUSDT": "0.01",
            "ETHIRT": "10",
            ... Other market precisions
        },
        "giftCard": {
            "physicalFee": "360000"
        }
    }
}

عملکرد سیستم نوبیتکس بر اساس پارامترهای مختلف تنظیم می‌شود که با استفاده از API «تنظیمات سیستم» می‌توانید مقادیر این پارامترها را دریافت نمایید. مواردی مانند رمزارزهای فعال، حداقل معامله در هر بازار، پله‌های کارمزد، سقف برداشت و بسیاری اطلاعات مفید دیگر از این طریق در دسترس شما قرار خواهد داشت. پاسخ در دو کلید nobitex شامل تنظیمات کلی سیستمی، و کلید coins شامل تنظیمات مخصوص هر رمزارز بازگردانده می‌شود. همچنین هر رمزارز دارای چندین «شبکه» است که برخی تنظیمات ممکن است فقط در سطح شبکه تعریف شوند یا در سطح رمزارز به صورت عمومی وجود داشته باشند ولی در بعضی شبکه‌های آن رمزارز متفاوت بوده و بازتعریف شوند.

پارامترهای پاسخ - features

کلید نوع توضیحات
fcmEnabled bool وضعیت فعال بودن FCM
autoKYC bool وضعیت فعال بودن احراز خودکار
enabledFeatures list of str لیست Featureهای فعال
betaFeatures list of str لیست featureهای بتا

پارامترهای پاسخ - nobitex

کلید نوع توضیحات
allCurrencies list of str نماد تمام رمزارزهای موجود در بازارها
activeCurrencies list of str نماد رمزارزهای اصلی و سطح یک
xchangeCurrencies list of str نماد رمزارزهای صرافی
topCurrencies list of str رمزارزهای برتر بازار
testingCurrencies list of str رمزارزهای در حال توسعه و آزمایش
withdrawLimits dict محدودیت های روزانه و ماهانه در سطوح مختلف
minOrders dict حداقل مبلغ سفارش ریالی و تتری
amountPrecisions dict دقت اعشار مقدار در بازارهای مختلف
pricePrecisions dict دقت اعشار قیمت در بازارهای مختلف
giftCard dict هزینه چاپ گیفت کارتهای فیزیکی

پارامترهای پاسخ - Coins

فیلد نوع توضیحات نمونه
coin str نماد یکتای رمزارز، معمولاً با حروف کوچک rls یا btc یا eth یا …
name str نام انگلیسی رمزارز Bitcoin یا TRON یا Dogecoin یا …
default_network str شبکه پیش‌فرض رمزارز، یکی از کلیدهای NetworkOptions آن رمزارز FIAT_MONEY یا BTC یا BSC یا …
network_list dict یک دیکشنری از شبکه‌های مختلف این رمزارز، با کلیدهای نام انگلیسی هر شبکه و مقادیر از نوع NetworkOptions
displayPrecision str دقت اعشار پیش‌فرض نمایش مقادیر این رمزارز 0.0001 یا 0.1 یا 1
stdName str عنوان رمز ارز ریال

پارامترهای پاسخ - Network

فیلد نوع توضیحات نمونه
network str نماد یکتای شبکه، معمولاً با حروف بزرگ FIAT_MONEY یا BTC یا BSC یا …
name str نام انگلیسی خوانای شبکه BTC یا ERC20 یا …
isDefault boolean آیا این شبکه پیش‌فرض برای این رمزارز در نوبیتکس است؟ false
beta boolean آیا این شبکه هنوز در حالت آزمایشی است؟ false
addressRegex str الگوی آدرس‌ها در این شبکه ^0x[0-9A-Fa-f]{40}$
memoRequired boolean آیا تراکنش روی این شبکه نیازمند ممو است؟ false
memoRegex str در صورت وجود، ممو باید چه الگویی داشته باشد؟ ^[0-9A-Za-z]{1,28}$
depositEnable boolean آیا واریز رمزارز روی این شبکه فعال است؟ true
minConfirm int حداقل تعداد کانفیرم شبکه برای تایید اولیه واریز 1
depositInfo dict فهرست پارامترهای واریز {"standard": {"depositMin": "0.01"}}
depositInfo.standard.depositMin monetary حداقل مقدار واریز این رمزارز روی شبکه 0
depositInfo.standard.depositMax monetary حداکثر مقدار واریز این رمزارز روی شبکه 1000
withdrawEnable boolean آیا برداشت رمزارز روی این شبکه فعال است؟ false
withdrawIntegerMultiple monetary حداقل مقدار تغییر مقدار قابل برداشت 0.000001
withdrawFee monetary کارمزد برداشت 0.1
withdrawMin monetary حداقل مقدار قابل برداشت 0.1
withdrawMax monetary حداکثر مقدار قابل برداشت 1000

ملاحظات عمومی

راهنمای اشکال‌یابی

پاسخ‌های موفق

نمونه پاسخ موفق:

{
  "status": "ok",
  "otherFields": "..."
}

در تمامی API ها در صورتی که عملیات مد نظر به درستی انجام شده باشد، پاسخ به صورت یک شی در قالب JSON بازگردانده می‌شود و با وضعیت HTTP 200 است. این پاسخ در حالت موفق یک کلید status با مقدار ok دارد. بنا به API مورد استفاده ممکن است یک یا چند کلید دیگر نیز در این پاسخ بازگردانده شود.

پاسخ‌های ناموفق

نمونه پاسخ ناموفق:

{
  "status": "failed",
  "code": "ErrorCode",
  "message": "Human-readable error message"
}

در تمامی APIها در صورتی که به هر دلیل امکان پردازش و انجام آن درخواست وجود نداشته باشد، یک پاسخ ناموفق بازگردانده می‌شود. پاسخ‌های ناموفق به دو صورت هستند، یا با کد خطای HTTP مشخص می‌شوند که مطابق با معانی وضعیت در پروتکل HTTP قابل تفسیر هستند.

در صورتی که پارامترهای ورودی قابل تفسیر باشند، ولی عملیات مد نظر قابل انجام نباشد، پاسخ با وضعیت HTTP 200 بازگردانده می‌شود، و توضیحات تکمیلی به صورت یک شی در قالب JSON خواهد بود که مقدار کلید status آن برابر failed است. کلید code در این شرایط، خطای دقیق رخ داده شده را مشخص می‌کند که در بخش «حالت‌های خطا» در توضیحات هر API فهرستی از کدهای خطای ممکن و توضیحات آن ارائه شده است. معمولاً در یک کلید message توضیح بیشتری در مورد آن خطا نیز ارائه می‌شود که جهت رفع عیب یا نمایش مستقیم به کاربر نهایی می‌تواند مفید باشد.

برخی وضعیت‌های پرکاربرد

کد HTTP عنوان توضیحات
200 OK درخواست دریافت و پاسخ داده شده، وضعیت اصلی درخواست در فیلد status پاسخ مشخص می‌شود.
400 Bad Request پارامترهای درخواست نادرست یا ناکافی است به طوری که امکان بررسی بیشتر و پاسخ بهتر به آن وجود ندارد.
401 Unauthorized کاربر احراز هویت نشده است
403 Forbidden انجام این عملیات مجاز نمی‌باشد
404 Not Found آدرس یا شی مد نظر وجود ندارد 🐱
500 Internal Server Error مشکلی به صورت موقت در سرور نوبیتکس رخ داده است 🐱

صفحه‌بندی

پارامترهای زیر در API های دریافت لیست دارای صفحه‌بندی قابل استفاده است:

پارامتر نوع پیش‌فرض توضیحات نمونه
page int اختیاری شماره صفحه 2
pageSize int اختیاری اندازه صفحه 10

فیلتر زمانی

پارامترهای زیر در API های دریافت لیست قابل فیلتر زمانی قابل استفاده است:

پارامتر نوع پیش‌فرض توضیحات نمونه
from date اختیاری از تاریخ 2022-05-12
to date اختیاری تا تاریخ 2022-07-22

مقادیر پولی (monetary)

در موارد متعددی پارامترهای ورودی درخواست‌ها از نوع مقدار پولی یا monetary مشخص شده است. برای داشتن بالاترین دقت، پیشنهاد می‌شود که این مقادیر را به صورت رشته‌ای ارسال نمایید، چرا که استفاده از انواع داده‌ای مانند float در کاربردهای دقیق مالی توصیه نمی‌شود.

اعتبارسنجی دو عاملی

در صورتی که اعتبارسنجی دو عاملی (2 Factor Authentication) را برای حساب خود فعال کرده باشید، باید در هنگام استفاده از برخی APIها، به خصوص در هنگام دریافت توکن از API لاگین، علاوه بر سایر پارامترها، رمز یک‌بار مصرف خود را نیز در هدرهای درخواست به این صورت ارسال نمایید: X-TOTP: 123456.

محدودیت‌های فراخوانی API

برخی از APIهای نوبیتکس دارای محدودیت تعداد فراخوانی در هر بازه‌ی زمانی هستند. با این حال اگر شما به صورت معمولی و مشابه استفاده‌ی متداول کاربران از API استفاده کنید، با این محدودیت‌ها مواجه نخواهید شد. محدودیت‌ها به ازای هر API مستقلا محاسبه و اعمال می‌شوند. محدودیت‌ها معمولا بر اساس آدرس IP درخواست دهنده و در موارد هم بر اساس کاربر (توکن) درخواست دهنده می‌باشند. در حالتی که به حد مجاز تعداد فراخوانی یک API رسیده باشید، پاسخ آن API به شما یک پیام خطا با کد 403 و دارای توضیحات مشخص در خصوص آن محدودیت خواهد بود.

در صورتی که به صورت موردی یا در حین تست کد خود به محدودیتی برخورد کردید، می‌توانید با منتظر ماندن (بین یک ساعت تا یک روز) آن محدودیت را برطرف کنید و دوباره امکان استفاده از API مد نظرتان را داشته باشید. اگر به صورت مداوم به محدودیتی برای یک API برخورد می‌کنید و فکر می‌کنید که بهتر است تعداد فراخوانی مجاز آن API افزایش یابد، حتما با ایجاد یک مورد در گیت‌هاب (لینک ایجاد مورد) مسئله را با ما مطرح نمایید.

حالت متداول و Pro

در برخی از درخواست‌ها جهت حفاظت بهتر از کاربران، برخی محدودیت‌ها اعمال می‌شود. در چنین مواردی در بخش ملاحظات این محدودیت‌ها توضیح داده شده و در انتهای آن عبارت «غیرفعال در حالت Pro» ذکر شده است. با ارائه پارامتر pro به مقدار yes به عنوان ورودی، این محدودیت برای آن درخواست غیرفعال می‌شود. با این حال دقت کنید که محدودیت‌های حالت متداول برای جلوگیری از حالت‌های خاص و اشتباهات رایج تعبیه شده است و تنها در صورت نیاز و آگاهی از تبعات احتمالی آن، اقدام به فعال‌سازی حالت Pro نمایید.

سوالات متداول

سوالی در مورد لاگین و دریافت توکن دارم

در این زمینه ابتدا مطالعه توضیحات احراز هویت و توکن، راهنمای شروع به کار با API و روش پیشنهادی دریافت توکن پیشنهاد می‌شود. سپس می‌توانید در بخش سوالات متداول دریافت توکن برخی سوالات متداول در این زمینه را مشاهده کنید.

آیا نوبیتکس محیط آزمایشی (Test) دارد؟

بله، شما میتوانید برای استفاده از کلیه امکانات بازار نوبیتکس و همچنین api ها از محیط آزمایشی نوبیتکس به آدرس‌های ذیل استفاده نمائید:

آدرس نوبیتکس آزمایشی : https://testnet.nobitex.ir

آدرس api آزمایشی : https://testnetapi.nobitex.ir

آیا برای استفاده از apiها محدودیتی وجود دارد؟

بله، برای مثال شما حتماً باید از IPهای ایران درخواست خود را ارسال نمائید، و یا محدودیت‌های مخصوص به هر api که در توضیحات هر کدام از endpointها آورده شده است.

فرمت استفاده شده برای تاریخ چیست؟

ساعت یونیکس Unix Time یکی از مقیاس اندازه‌گیری زمان آنی است. این عدد که تعداد ثانیه‌ها از ساعت ۰۰:۰۰:۰۰ ساعت هماهنگ جهانی اول ژانویه ۱۹۷۰ است، شامل ثانیه‌های کبیسه نمی‌شود. برای زمان‌های قبل از اول ژانویه از اعداد منفی استفاده می‌شود.

به عنوان مثال [۰۱/۰۱/۱۹۷۰ ۰۰:۰۰:۰۰] برابر با صفر (۰) و [۰۱/۰۱/۱۹۷۰ ۰۰:۰۱:۰۰] برابر با شصت(۶۰) است.

فرمول اصلی آن به این صورت می‌باشد:

تعداد (روزهای گذشته از اول ژانویه ۱۹۷۰) × ۸۶۴۰۰(تعداد ثانیه‌های هر روز)

به منظور مطالعه بیشتر به آدرس زیر مراجعه نمائید https://en.wikipedia.org/wiki/Unix_time

آیا برای apiها کدهای نمونه تهیه شده است؟

بله، collection کلیه api ها برای استفاده در برنامه postman تهیه و از اینجا میتوانید به آن دسترسی داشته باشید. در این collection شما میتوانید نمونه فراخوانی هر کدام از این apiها را به زبان‌های مختلف برنامه نویسی نظیر پی اچ پی، پایتون، سی شارپ و … در این مجموعه مشاهده کرده و آن را در سیستم خود اجرا نمائید.