نِت اَرز · مستندات API نرخ ارز
همهٔ مستندات
تابلوی نرخ مرجع تعاملی کلید رایگان

نمونه‌کد و SDK

نمونه‌کد آمادهٔ API نرخ ارز نِت اَرز برای JavaScript (مرورگر)، Node.js، Python، PHP/Laravel، Go و cURL، و نمونهٔ اتصال در WordPress و Google Sheets.

base_url: https://netarz.ir/api/fx/v1 دلار امروز: ۲۷۳,۶۰۰ تومان به‌روزرسانی: 1405/07/20

API ساده است و SDK رسمی لازم ندارد؛ این‌ها الگوهای آماده برای زبان‌ها و محیط‌های رایج‌اند. در همه، دو نکته ثابت است: کلید در هدر Authorization و کش کوتاه سمت خودتان (نرخ هر چند دقیقه عوض می‌شود).

نمونه‌کد آماده در گیت‌هاب

نسخهٔ کامل این الگوها، با کش و پیام خطای روشن، در مخزن netarz/fx-api-examples است. کتابخانهٔ آماده هم هست: PHP در netarz/fx-php (با Composer) و پایتون و جاوااسکریپت در پوشهٔ packages همان مخزن نمونه‌کد. افزونهٔ وردپرس و بقیهٔ مخزن‌ها را در صفحهٔ کد باز معرفی کرده‌ایم.

JavaScript (مرورگر)

ESM
// یک کلاینت کوچک برای مرورگر (روی دامنهٔ ثبت‌شده)
export function netarzFx(key, base = "https://netarz.ir/api/fx/v1") {
  const call = async (path, params = {}) => {
    const url = new URL(base + path);
    Object.entries(params).forEach(([k, v]) => v != null && url.searchParams.set(k, v));
    const res = await fetch(url, { headers: { Authorization: `Bearer ${key}` } });
    const body = await res.json();
    if (!res.ok) throw Object.assign(new Error(body.error?.message), { code: body.error?.code, status: res.status });
    return body;
  };
  return {
    rates: (codes) => call("/rates", { codes: codes?.join(",") }),
    rate: (code) => call(`/rates/${code}`),
    convert: (from, to, amount = 1, side = "mid") => call("/convert", { from, to, amount, side }),
    history: (code, params) => call(`/history/${code}`, params),
    me: () => call("/me"),
  };
}

const fx = netarzFx("fx-ntz-v1-...");
const { data } = await fx.rate("USD");

Node.js

Node 18+
// Node.js 18+ (بدون وابستگی) — از سرور با IP مجاز
const BASE = "https://netarz.ir/api/fx/v1";
const headers = { Authorization: `Bearer ${process.env.NETARZ_FX_KEY}` };

export async function usdToman() {
  const res = await fetch(`${BASE}/rates/USD`, { headers });
  if (!res.ok) throw new Error((await res.json()).error.code);
  const { data, meta } = await res.json();
  return { buy: data.buy, sell: data.sell, asOf: meta.as_of };
}

Python

requests
import os, requests

class NetArzFx:
    BASE = "https://netarz.ir/api/fx/v1"

    def __init__(self, key: str | None = None):
        self.s = requests.Session()
        self.s.headers["Authorization"] = f"Bearer {key or os.environ['NETARZ_FX_KEY']}"

    def _get(self, path, **params):
        r = self.s.get(f"{self.BASE}{path}", params=params, timeout=10)
        body = r.json()
        if not r.ok:
            raise RuntimeError(f'{body["error"]["code"]}: {body["error"]["message"]}')
        return body

    def rates(self, codes=None):        return self._get("/rates", codes=",".join(codes) if codes else None)["data"]
    def rate(self, code):               return self._get(f"/rates/{code}")["data"]
    def convert(self, f, t, amount=1):  return self._get("/convert", **{"from": f, "to": t, "amount": amount})["data"]
    def history(self, code, **kw):      return self._get(f"/history/{code}", **kw)["data"]

fx = NetArzFx()
print(fx.rate("EUR")["sell"])

PHP / Laravel

Laravel
<?php
// Laravel — app/Services/NetArzFx.php
namespace App\Services;

use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Http;

class NetArzFx
{
    private const BASE = 'https://netarz.ir/api/fx/v1';

    public function rate(string $code): array
    {
        // نرخ هر ۵ دقیقه عوض می‌شود؛ کش کوتاه سهمیه را نجات می‌دهد
        return Cache::remember("netarz-fx:$code", 120, fn () => Http::withToken(config('services.netarz.fx_key'))
            ->get(self::BASE."/rates/$code")
            ->throw()
            ->json('data'));
    }

    public function toToman(float $usd): int
    {
        return (int) round($usd * $this->rate('USD')['sell']);
    }
}

WordPress

functions.php
<?php
// WordPress — نمایش نرخ دلار در قالب: <?php echo netarz_usd(); ?>
function netarz_usd() {
    $cached = get_transient('netarz_usd');
    if ($cached !== false) return $cached;

    $res = wp_remote_get('https://netarz.ir/api/fx/v1/rates/USD', [
        'headers' => ['Authorization' => 'Bearer ' . NETARZ_FX_KEY], // در wp-config.php تعریف کنید
        'timeout' => 10,
    ]);
    if (is_wp_error($res)) return '—';

    $data = json_decode(wp_remote_retrieve_body($res), true)['data'] ?? null;
    $out  = $data ? number_format($data['sell']) . ' تومان' : '—';
    set_transient('netarz_usd', $out, 5 * MINUTE_IN_SECONDS);
    return $out;
}

برای نمایش تابلو بدون کد، ویجت را ببینید. اگر نمی‌خواهید به functions.php دست بزنید، افزونهٔ وردپرس نِت اَرز را نصب کنید: کد کوتاه (شورت‌کد) [netarz_rate]، جدول چند ارز، ابزارک و کش داخلی دارد.

Go

Go
package netarzfx

import (
	"encoding/json"
	"fmt"
	"net/http"
	"os"
)

type Rate struct {
	Code string `json:"code"`
	Buy  int    `json:"buy"`
	Sell int    `json:"sell"`
	Mid  int    `json:"mid"`
}

func GetRate(code string) (*Rate, error) {
	req, _ := http.NewRequest("GET", "https://netarz.ir/api/fx/v1/rates/"+code, nil)
	req.Header.Set("Authorization", "Bearer "+os.Getenv("NETARZ_FX_KEY"))
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		return nil, err
	}
	defer res.Body.Close()
	if res.StatusCode != 200 {
		return nil, fmt.Errorf("netarz fx: HTTP %d", res.StatusCode)
	}
	var body struct{ Data Rate `json:"data"` }
	return &body.Data, json.NewDecoder(res.Body).Decode(&body)
}

Google Sheets

Apps Script
// Google Sheets — Extensions ▸ Apps Script
// سپس در سلول: =NETARZ_RATE("USD")   یا   =NETARZ_RATE("EUR"; "buy")
// نکته: Apps Script از IP گوگل درخواست می‌فرستد؛ IP آن ثابت نیست.
// راه حل: یک اپ با دامنهٔ script.google.com نمی‌شود، پس این تابع را پشت
// یک endpoint کوچک روی سرور خودتان بگذارید که کلید را نگه می‌دارد.
function NETARZ_RATE(code, side) {
  const res = UrlFetchApp.fetch("https://YOUR-SERVER/netarz-proxy?code=" + code);
  const data = JSON.parse(res.getContentText()).data;
  return data[side || "mid"];
}

n8n / Make / Zapier

یک نود «HTTP Request» با متد GET، آدرس https://netarz.ir/api/fx/v1/rates/USD و هدر Authorization: Bearer …. چون این ابزارها از IPهای متغیر می‌آیند، برای اپ‌شان یک محدودهٔ IP مجاز تعریف کنید (n8n خودمیزبان: IP سرور خودتان) یا درخواست را از سرور خودتان پروکسی کنید. راه‌حل هر حالتی که IP ثابت ندارد در راهنمای قفل دامنه و IP آمده است.