زرنرخ
پنل مدیریت دسترسی‌ها
زرنرخ
کلیدهای دسترسی
💰 قیمت‌ها
🎚 تعدیل قیمت
لاگ دسترسی
🧭 مسیرها
کاربران ادمین
🛰 API ورودی
🔔 تلگرام
🌐 روتینگ IP
🧮 مپینگ قیمت
تنظیمات
📖 راهنما

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

نام کلاینتکلیدوضعیتمحدودیت (در دقیقه) انقضاIP مجازدرخواست‌هاآخرین استفاده

لیست قیمت‌های مبدأ

قیمت‌هایی که همین الان از منبع (mazanehamrah) گرفته می‌شوند. واحد: تومان. مقادیر هر ۳ ثانیه تازه می‌شوند.

تعدیل قیمت (لیست مقصد)

قیمتِ هر قلمی را که اینجا اضافه کنید، به‌صورت درصدی یا مقدار ثابت بالا/پایین می‌شود و روی خروجیِ همهٔ کانال‌ها (API و سایت) اعمال می‌گردد. قیمتِ منبع دست‌نخورده می‌ماند و بقیهٔ قلم‌ها بدون تغییر عبور می‌کنند. برای «بدون تغییر»، حالت را روی «بدون تعدیل» بگذارید یا ردیف را حذف کنید. مقدار منفی = کاهش.

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

لاگ دسترسی

زمانکلاینتIPمسیروضعیتنوعمرورگر/کلاینت

کاربران ادمین

نام کاربریساخته‌شدهآخرین ورود

تغییر رمز عبور

API ورودی (منبع قیمت)

—

این تنظیماتِ منبعِ بالادست است که سرویس از آن قیمت می‌گیرد. تغییرات بلافاصله (بدون ری‌استارت) اعمال می‌شوند.

وضعیت زندهٔ منبع

وضعیت آخرین poll—
خطاهای پیاپی—
backoff فعلی—
آخرین دریافت موفق—
آخرین تلاش—
آخرین خطا—
دادهٔ کهنه؟—
زمان اسنپ‌شات—

مسیرهای عمومی API

هر مسیر را می‌توانید موقتاً غیرفعال کنید — درخواست‌ها با کد ۴۰۳ رد می‌شوند و تغییر بلافاصله (بدون ری‌استارت) اعمال می‌شود. آمار از لاگ دسترسی ۲۴ ساعت اخیر است. مسیر health قابل غیرفعال شدن نیست چون مانیتورینگ به آن وابسته است.

مسیر شرح کلید درخواست ۲۴س خطا ۲۴س آخرین استفاده فعال

اعلان تلگرام

—

وقتی دادهٔ منبع کهنه/قطع شود، سرویس به تلگرام شما پیام می‌دهد؛ برگشتنش را هم اعلام می‌کند و تا وقتی مشکل باقی است دوره‌ای یادآوری می‌کند.

وضعیت اعلان‌ها

پیکربندی شده؟—
تعداد پیام‌های ارسالی—
آخرین ارسال—
آخرین پیام—
آخرین خطا—

راهنما: در تلگرام بات جدید با @BotFather بسازید (/newbot)، توکن را اینجا بگذارید، به بات خودتان /start بدهید و Chat ID عددی‌تان را وارد کنید. برای گروه، بات را عضو گروه کنید و Chat ID گروه (منفی) را بگذارید.

روتینگ IP (سطح سرور)

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

افزودن سریع:
نام مقصد (IP یا CIDR) گیت‌وی (via) وضعیت فعال

مپینگ قیمت

در حال بارگذاری…

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

⬇ دانلود Markdown ⬇ دانلود PDF

این سرویس، قیمت لحظه‌ای طلا، سکه و ارز را از منبع اصلی می‌گیرد، کلید منبع را سمت سرور مخفی نگه می‌دارد، تغییرِ قیمت را محاسبه می‌کند و خروجی تمیز و گروه‌بندی‌شده را از دو راه در اختیار کلاینت‌های شما می‌گذارد: REST (برای گرفتن اسنپ‌شات) و WebSocket (برای دریافت زندهٔ تغییرات). هر تعداد کلاینت هم وصل شوند، فشار روی منبع ثابت می‌ماند.

آدرس API عمومی: https://api.zarnerkh.ir
📌 معماری و مفهوم کلی

سرور هر ۲ ثانیه یک‌بار قیمت‌ها را از منبع می‌خواند و در حافظه کش می‌کند. کلاینت‌های شما به‌جای تماس مستقیم با منبع، به این سرویس وصل می‌شوند و با یک کلید دسترسی (که در همین پنل می‌سازید) داده می‌گیرند. مزایا:

  • کلیدِ منبعِ اصلی هرگز فاش نمی‌شود.
  • محدودیت نرخِ منبع رعایت می‌شود (هرچند کلاینت وصل شوند، فشار ثابت است).
  • برای هر کلاینت کلید جدا، با محدودیت و انقضای مستقل، و لاگ کامل.
[منبع اصلی] ──poll هر ۲ثانیه──▶ [کش + محاسبهٔ change] ──┬─▶ REST  /v1/prices
        (کلید مخفی)                                       └─▶ WS    /ws (پوش زنده)
🚀 شروع سریع (۳ گام)
  1. به تب «کلیدهای دسترسی» بروید و روی «+ کلید جدید» بزنید؛ یک نام برای کلاینت بگذارید و کلید ساخته می‌شود (با zk_ شروع می‌شود).
  2. کلید را کپی کنید (روی خودِ کلید در جدول کلیک کنید).
  3. در برنامهٔ کلاینت، درخواست بزنید و کلید را در هدر X-API-KEY بفرستید:
curl -H "X-API-KEY: zk_YOUR_KEY" \
  https://api.zarnerkh.ir/v1/prices
🔑 مدیریت کلیدهای دسترسی

هر کلید برای یک کلاینت (سایت، اپ، ربات…) ساخته می‌شود و این تنظیمات را دارد:

  • نام کلاینت: فقط برای شناسایی خودتان.
  • وضعیت (فعال/غیرفعال): با یک کلیک می‌توانید کلید را موقتاً ببندید بدون حذف.
  • محدودیت در دقیقه: سقف تعداد درخواست هر دقیقه برای آن کلید (مثلاً ۱۲۰). بیشتر از این → خطای ۴۲۹.
  • انقضا: با تقویم شمسی یک تاریخ انتخاب کنید؛ بعد از آن کلید خودکار بی‌اثر می‌شود. خالی = بدون انقضا.
  • IP مجاز: اگر پر کنید، فقط از همان IPها کلید کار می‌کند (چند IP را با کاما جدا کنید). خالی = همه‌جا.

حذف کلید فوری و برگشت‌ناپذیر است؛ برای توقف موقت، بهتر است «غیرفعال» کنید.

🌐 REST API — گرفتن قیمت‌ها

روی همهٔ درخواست‌ها (به‌جز health) هدر X-API-KEY لازم است (یا پارامتر ?api_key=). واحد قیمت‌ها تومان است. CORS باز است (از مرورگر هم قابل استفاده).

مسیرتوضیح
GET /v1/healthسلامت سرویس (بدون کلید). خروجی: {ok, stale, uptime_s}
GET /v1/pricesهمهٔ قیمت‌ها، گروه‌بندی‌شده
GET /v1/prices/:groupفقط یک گروه: arz (ارز)، sekke (سکه)، abshodeh (آبشده)، parsian، noghre (نقره)
GET /v1/history?metric=&range=تاریخچهٔ یک متریک؛ range = 1d / 1w / 1m
GET /v1/history/metricsفهرست متریک‌های قابل استعلام تاریخچه

نمونهٔ خروجی هر آیتم قیمت:

{
  "name": "دلار آمریکا آبی نقد",
  "group": "arz",
  "buy": 176500,          // قیمت خرید
  "sell": 174000,         // قیمت فروش
  "base": 175500,         // میانگین/مبنا
  "change": 500,          // تغییر نسبت به قبل
  "change_percent": 0.28,
  "dir": "up",            // up | down | same
  "updated_at": "2026-07-03T21:41:24+03:30"
}

نمونهٔ استفاده در جاوااسکریپت:

const r = await fetch('https://api.zarnerkh.ir/v1/prices/arz', {
  headers: { 'X-API-KEY': 'zk_YOUR_KEY' }
});
const data = await r.json();
console.log(data.group.items);
🔌 WebSocket — دریافت زنده

برای به‌روزرسانی لحظه‌ای (بدون نیاز به درخواست مکرر)، به WebSocket وصل شوید. کلید در query می‌آید. اول یک پیام snapshot (کل داده) می‌گیرید، سپس فقط updateهای تغییرکرده.

const ws = new WebSocket('wss://api.zarnerkh.ir/ws?api_key=zk_YOUR_KEY');
ws.onmessage = (e) => {
  const msg = JSON.parse(e.data);
  if (msg.type === 'snapshot') { /* داده اولیه */ }
  if (msg.type === 'update')   { /* تغییرات زنده */ }
};
🔄 سازگاری با سایت قدیمی (Legacy)

برای سایت‌هایی که با اسکیمای قدیمی کار می‌کنند (مثل zarnerkh.ir) این دو مسیر خروجیِ مسطحِ سازگار می‌دهند:

  • GET /legacy/prices — اسنپ‌شات مسطح (کلیدهایی مثل Geram18، Mazane، Dollar…) با هدر X-API-KEY.
  • WS /legacy-ws — هَندشیک {type:"auth", username:"client", password:"<کلید>"}، سپس پاسخ {auth:"ok"} و پیام‌های {status, data, trends}.

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

📁 لاگ دسترسی

در تب «لاگ دسترسی» هر درخواست (REST یا WS) ثبت می‌شود: زمان، نام کلاینت، IP، مسیر، وضعیت (موفق/ردشده) و مرورگر/کلاینت. می‌توانید بر اساس کلاینت و وضعیت فیلتر کنید. برای عیب‌یابی (مثلاً چرا کلیدی رد می‌شود) بسیار مفید است.

👥 کاربران ادمین و رمز عبور
  • در تب «کاربران ادمین» می‌توانید برای همکاران، حسابِ ورود به پنل بسازید یا حذف کنید.
  • در تب «تنظیمات» رمز عبور خودتان را عوض کنید (حداقل ۸ کاراکتر). رمزها هش‌شده ذخیره می‌شوند.
🛡️ امنیت و عیب‌یابی
  • کلید را محرمانه نگه دارید. در کدِ سمت‌سرور بگذارید، نه جایی که کاربر ببیند (مگر کلیدِ مخصوصِ نمایشِ عمومی با محدودیت مناسب).
  • اگر کلیدی لو رفت، همان را غیرفعال/حذف و کلید جدید بسازید.
خطامعنی
۴۰۱کلید ارسال نشده یا نامعتبر است.
۴۰۳کلید غیرفعال/منقضی است یا IP مجاز نیست.
۴۲۹از محدودیتِ درخواست در دقیقه رد شده‌اید؛ کمی صبر کنید یا محدودیت کلید را بالا ببرید.