SafeON / توسعه‌دهندگان پنل کاربری ساخت کلید API

مستندات API SafeON

با یک درخواست HTTP ساده، ریسک AML هر کیف‌پول ارز دیجیتال را بررسی کن: امتیاز ریسک ۰ تا ۱۰۰، ارتباط با نهادهای تحریم‌شده (OFAC)، صرافی‌های ایرانی، وضعیت فریز تتر و منبع وجوه — روی شبکه‌های TRON، BSC و Ethereum.

مبنای آدرس (Base URL)
همه‌ی درخواست‌ها به این پایه فرستاده می‌شوند: https://safeon.ir

معرفی

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

احراز هویت

برای ساخت کلید وارد پنل کاربری شو، به بخش «API و توسعه‌دهندگان» برو و «کلید جدید» بساز. کلید فقط یک بار در لحظه‌ی ساخت نمایش داده می‌شود؛ آن را جای امن ذخیره کن (ما فقط hash آن را نگه می‌داریم و امکان بازیابی نیست).

کلید را در هر درخواست، در هدر Authorization به‌صورت Bearer بفرست:

Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

سهمیه و محدودیت نرخ

هر فراخوانی موفق /api/v1/screen دقیقا مثل یک بررسی در اپ، یک واحد از سهمیه‌ی پلن تو مصرف می‌کند. با اتمام سهمیه، پاسخ 402 quota_exceeded می‌گیری تا پلن را ارتقا بدهی.

هر کلید محدودیت نرخ دارد: به‌صورت پیش‌فرض ۳۰ درخواست در هر دقیقه. فراتر از آن پاسخ 429 rate_limited همراه هدر Retry-After (ثانیه تا تلاش بعدی) برمی‌گردد. در سمت خودت این هدر را رعایت کن و درخواست‌ها را صف/کند کن.

در بدنه‌ی هر پاسخ موفق، وضعیت لحظه‌ای سهمیه هم می‌آید (quota.remaining) تا بتوانی مصرف را رصد کنی.

بررسی ریسک کیف‌پول

یک آدرس را بررسی می‌کند و گزارش ریسک برمی‌گرداند.

POST/api/v1/screen

بدنه‌ی درخواست (JSON)

فیلدنوعالزامتوضیح
addressstringالزامیآدرس کیف‌پول. فرمت TRON (T…) یا EVM (0x…).
networkstringاختیارییکی از tron · bsc · ethereum · auto. برای آدرس‌های 0x… اگر ندهی یا auto بدهی، شبکه‌ی فعال از روی فعالیت on-chain خودکار تشخیص داده می‌شود. برای آدرس T… همیشه TRON است.
// نمونه بدنه
{
  "address": "0x053A3068E0849b4fccfD73967F057C11F22D61FA",
  "network": "auto"
}

ساختار پاسخ (۲۰۰ OK)

فیلدنوعتوضیح
addressstringآدرس بررسی‌شده.
networkstringشبکه‌ای که تحلیل روی آن انجام شد (tron/bsc/ethereum).
risk_scoreintegerامتیاز ریسک ۰ (امن) تا ۱۰۰ (بحرانی).
risk_levelstringسطح ریسک: low · medium · high · severe (و unknown برای داده ناکافی).
verdictstringحکم پیشنهادی: approve (تایید) · review (بررسی دستی) · reject (رد) · unknown.
flagsobjectپرچم‌های بولی: self_frozen (خودش فریز است)، freeze_imminent (در معرض فریز)، freeze_recent، insufficient_data.
flowobjectخلاصه‌ی جریان: تعداد طرف‌های مقابل، ورودی/خروجی و ارزش دلاری، و پوشش داده (full/sampled).
direct_exposurearrayارتباط‌های مستقیم پرخطر (آدرس، دسته، جهت، تعداد تراکنش، ارزش دلاری).
indirect_exposurearrayارتباط‌های غیرمستقیم (چند هاپ) با نهادهای پرخطر/فریزشده.
evidencearrayفهرست شواهد امتیازدهی (شدت، امتیاز، متن).
quotaobjectوضعیت سهمیه پس از این فراخوانی: used · limit · remaining.
generated_atintegerزمان تولید پاسخ (Unix epoch، ثانیه).
// نمونه پاسخ (خلاصه‌شده)
{
  "address": "0x053A3068E0849b4fccfD73967F057C11F22D61FA",
  "network": "ethereum",
  "risk_score": 48,
  "risk_level": "medium",
  "verdict": "review",
  "flags": {
    "self_frozen": false,
    "freeze_imminent": false,
    "freeze_recent": false,
    "insufficient_data": false
  },
  "flow": { "total_counterparties": 1, "inflow_count": 1, "coverage": "full" },
  "direct_exposure": [
    { "category": "sanctioned", "label": "nobitex.ir", "direction": "in", "value_usd": 1000 }
  ],
  "indirect_exposure": [],
  "evidence": [ { "severity": "high", "points": 40, "text": "..." } ],
  "quota": { "used": 12, "limit": 100, "remaining": 88 },
  "generated_at": 1783852000
}

شبکه‌های پشتیبانی‌شده

tron bsc ethereum auto

آدرس‌های EVM (0x…) روی Ethereum و BSC یکسان‌اند؛ اگر network را ندهی یا auto بگذاری، SafeON فعالیت on-chain را می‌سنجد و زنجیره‌ی فعال را انتخاب می‌کند. برای کنترل کامل، network را صریح بفرست.

خطاها

هر خطا با کد وضعیت HTTP و بدنه‌ی { "error": "...", "message": "..." } برمی‌گردد.

کدerrorمعنی
401missing_api_keyهدر Authorization نبود.
401invalid_api_keyکلید نامعتبر یا باطل‌شده.
422invalid_addressفرمت آدرس نامعتبر.
422invalid_networkمقدار network نامعتبر.
402quota_exceededسهمیه تمام شد — پلن را ارتقا بده.
429rate_limitedسقف نرخ رد شد؛ هدر Retry-After را رعایت کن.
502screen_failedخطای موقت در دریافت داده‌ی زنجیره؛ دوباره تلاش کن.

نمونه‌های کد

cURL

curl -X POST https://safeon.ir/api/v1/screen \
  -H "Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"address":"0x053A3068E0849b4fccfD73967F057C11F22D61FA","network":"auto"}'

Python

import requests

resp = requests.post(
    "https://safeon.ir/api/v1/screen",
    headers={"Authorization": "Bearer sk_live_xxxx"},
    json={"address": "T...", "network": "tron"},
    timeout=60,
)
data = resp.json()
print(data["risk_score"], data["risk_level"])

JavaScript (Node)

const res = await fetch("https://safeon.ir/api/v1/screen", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sk_live_xxxx",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ address: "0x...", network: "auto" }),
});
const data = await res.json();
console.log(data.risk_score, data.risk_level);
آماده‌ای شروع کنی؟
وارد پنل کاربری شو، کلید بساز و اولین درخواست را بفرست. سوالی داری؟ از بخش پشتیبانی در پنل تیکت بزن.

مطالعه بیشتر در بلاگ SafeON

بلاگ آموزشیتفاوت ریسک مستقیم و غیرمستقیم در تحلیل آنچینبلاگ آموزشیراهنمای استعلام آدرس ترون (TRON)بلاگ آموزشیچطور قبل از واریز، ریسک یک کیف پول را بسنجیم؟