پرش به مطلب اصلی

راهنمای کلید API

API Key برای دسترسی کنترل‌شده به APIهای نوبیتکس طراحی شده است. هر کلید می‌تواند دسترسی محدود، لیست IP مجاز و تاریخ انقضا داشته باشد.

چرا API Key؟

  • محدود کردن سطح دسترسی به مجوزهای مشخص
  • پشتیبانی از IP Whitelist
  • امکان تعیین تاریخ انقضا
  • امکان حذف کلید بدون تغییر رمز عبور اصلی
  • مناسب برای ربات‌ها و اسکریپت‌های خودکار

دسترسی‌ها

دسترسیکاربرد
READخواندن اطلاعات کاربر، سفارش‌ها، کیف‌پول‌ها، برداشت‌ها، پرتفو و داده‌های مشابه
TRADEثبت، لغو یا تغییر سفارش‌های اسپات و تعهدی و عملیات تبدیل موجودی
WITHDRAWثبت، تایید، لغو و عملیات مرتبط با برداشت
DEPOSITساخت شناسه عمومی کاربر و آدرس واریز رمزارز
ADDRESS_BOOKافزودن، حذف و تغییر وضعیت دفتر آدرس و برداشت امن
OTPدرخواست رمز یکبارمصرف از APIهای مرتبط، مانند دفتر آدرس یا آنتی‌فیشینگ
VIP_CREDITدریافت و بازپرداخت اعتبار ویژه و مشاهده طرح، بدهی، تراکنش‌ها و سقف‌های قابل محاسبه

هر کلید می‌تواند یک یا چند دسترسی داشته باشد. مقدار permissions هنگام ساخت کلید به صورت رشته جداشده با کاما ارسال می‌شود، مانند READ,TRADE.

مسیرهای اصلی هر دسترسی

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

READمشاهده اطلاعات حساب و فعالیت‌ها
اطلاعات کاربر

/users/preferences /users/profile /users/verification/status /notifications/list /users/limitations

معاملات

/market/orders/status /market/orders/list /market/trades/list

پرتفو

/users/portfolio/last-week-daily-profit /users/portfolio/last-week-daily-total-profit /users/portfolio/last-month-total-profit /users/portfolio/daily_total_balance

واریز شتابی

/users/payments/ids-list

کیف پول

/users/wallets/list /v2/wallets /users/wallets/balance /users/wallets/transactions/list /users/transactions-history /users/wallets/deposits/list /users/wallets/withdraws/list /users/wallets/deposit/bank /users/wallets/deposit/shetab /withdraws/{withdraw_id}

معاملات تعهدی

/margin/fee-rates /margin/delegation-limit /margin/v2/delegation-limit /margin/my-delegation-limit-details /positions/list /positions/active-count /positions/{position_id}/status /positions/{position_id}/edit-collateral/options /margin/predict/{category}

برداشت ریالی

GET /cobank/withdraw/{withdrawId} GET /cobank/withdraw-banks

وب‌سوکت و دفتر آدرس

/auth/ws/token/ GET /address_book

TRADEثبت و مدیریت سفارش‌ها
معاملات تعهدی

/margin/orders/add /positions/{position_id}/close /positions/{position_id}/edit-collateral

معاملات اسپات

/market/orders/add /market/orders/batch-add /market/orders/update-status /market/orders/cancel-old /market/orders/cancel-batch /users/wallets/convert

WITHDRAWمدیریت برداشت‌ها
برداشت رمزارز

/withdraws/{withdraw_id}/update-status /users/wallets/withdraw /users/wallets/withdraw-confirm /users/wallets/withdraw-cancel

برداشت ریالی

POST /cobank/withdraw POST /cobank/withdraw/{withdrawId}/cancel

لغو اضطراری

POST /security/emergency-cancel/get-code POST /security/emergency-cancel/activate

DEPOSITساخت شناسه و آدرس واریز
واریز رمزارز

/users/generate-public-id /users/wallets/generate-address

ADDRESS_BOOKمدیریت دفتر آدرس
دفتر آدرس

POST /address_book DELETE /address_book/{address_id}/delete /address_book/whitelist/activate /address_book/whitelist/deactivate

OTPدرخواست رمز یک‌بارمصرف
رمز یک‌بارمصرف

/v2/otp/request

VIP_CREDITمدیریت اعتبار ویژه
عملیات اعتبار

POST /credit/lend POST /credit/repay

اطلاعات و محاسبات اعتبار

GET /credit/debt-detail GET /credit/plan GET /credit/transactions GET /credit/lend-calculator GET /credit/withdraw-calculator

استفاده از API Key

برای درخواست‌های پشتیبانی‌شده، به جای هدر Authorization سه هدر زیر را ارسال کنید:

Headerتوضیح
Nobitex-Keyکلید عمومی برگشتی در فیلد key
Nobitex-Signatureامضای Ed25519 به صورت URL-safe Base64
Nobitex-Timestampزمان Unix بر حسب ثانیه در UTC

مقدار Nobitex-Timestamp در محیط production باید حداکثر ۳۰ ثانیه با زمان سرور اختلاف داشته باشد.

ساخت امضا

متن امضا دقیقا به این شکل ساخته می‌شود:

timestamp + METHOD + full_path + raw_body
  • timestamp: همان رشته‌ای که در هدر Nobitex-Timestamp ارسال می‌کنید.
  • METHOD: متد HTTP با حروف بزرگ، مانند GET یا POST.
  • full_path: مسیر کامل درخواست همراه query string، مانند /market/orders/list?fromId=123.
  • raw_body: بدنه خام درخواست دقیقا به همان شکلی که ارسال می‌شود. برای درخواست بدون body این بخش رشته خالی است.

دقت کنید که فاصله‌ها، ترتیب کلیدهای JSON و newlineهای body در امضا اثر دارند. رشته‌ای را امضا کنید که دقیقا به سرور ارسال می‌شود.

نمونه ساخت امضا برای درخواست POST /market/orders/cancel-old:

import base64
import json
import time
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey

timestamp = str(int(time.time()))
method = "POST"
full_path = "/market/orders/cancel-old"
body = json.dumps({"hours": 2.4}, separators=(",", ":"))
payload = f"{timestamp}{method}{full_path}{body}".encode()

private_key_b64 = "<Your-Private-Key>"
private_key_bytes = base64.urlsafe_b64decode(private_key_b64)
private_key = Ed25519PrivateKey.from_private_bytes(private_key_bytes)

signature = private_key.sign(payload)
signature_b64 = base64.urlsafe_b64encode(signature).decode()
print(signature_b64)

نمونه درخواست متناظر:

BODY='{"hours":2.4}'
curl -X POST 'https://apiv2.nobitex.ir/market/orders/cancel-old' \
-H "Content-Type: application/json" \
-H "Nobitex-Key: <Your-Public-Key>" \
-H "Nobitex-Signature: <Generated-Signature>" \
-H "Nobitex-Timestamp: <Unix-Timestamp>" \
-d "$BODY"

در این نمونه مقدار BODY باید همان رشته‌ای باشد که در متغیر body پایتون امضا شده است.