رفتن به محتوا

فروشگاه شما، متصل به وب‌سرویس آی پی ثابت

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

کلید API فقط در سرور شما نگهداری می‌شود.
GET /account
// Your next connection starts here

const connection = {
  platform: "ip-sabet",
  authentication: "Bearer token",
  transport: "HTTPS",
  workflow: [
    "quote",
    "purchase",
    "manage"
  ]
};
احراز هویت با کلیداستعلام پیش از خریدکنترل سقف هزینهپیگیری عملیات
QUICK START

در سه قدم، آماده اتصال شوید

  1. درخواست نمایندگی

    کیف پول را حداقل ۲ میلیون تومان شارژ و از پنل درخواست ثبت کنید.

  2. دریافت کلید دسترسی

    پس از تأیید مدیریت، تخفیف خود را ببینید و کلید API بسازید.

  3. اولین درخواست

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

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

BASE URL
https://ip-sabet.me/wp-json/ips-reseller/v1
اولین درخواست · cURL
curl -X GET 'https://ip-sabet.me/wp-json/ips-reseller/v1/wallet' \
  -H "Authorization: Bearer YOUR_API_KEY"
AUTHENTICATION

احراز هویت و امنیت اتصال

تمام درخواست‌ها باید از سرور شما و با HTTPS ارسال شوند. کلید فقط در هدر Authorization: Bearer YOUR_API_KEY قرار می‌گیرد. ارسال کلید در URL یا بدنه معتبر نیست. برای درخواست POST هدر Content-Type: application/json لازم است. کلید فقط یک‌بار در پنل نمایش داده می‌شود؛ با ساخت کلید تازه، کلید قبلی فوراً لغو می‌شود. تعلیق نمایندگی یا مسدودی حساب نیز دسترسی را قطع می‌کند.

در پنل می‌توانید کلید را لغو و حداکثر ۲۰ IP سرور را مجاز کنید. همه پاسخ‌های خصوصی بدون کش هستند. سقف استفاده ۶۰ درخواست در هر دقیقه تقویمی برای هر نماینده است. پس از پاسخ 429 تا دقیقه بعد صبر کنید. شناسه کاربران و سفارش‌ها فقط در محدوده حساب خودتان قابل دسترسی است.

PRICING

واحد پول، تخفیف و قیمت

تمام مبالغ عدد صحیح تومان (IRT) هستند، نه ریال. مبنا قیمت فروش جاری سایت است (اگر قیمت فروش ویژه فعال باشد، همان قیمت). ابتدا هزینه همه کشورها اضافه می‌شود و سپس تخفیف نمایندگی اعمال و مبلغ نهایی رو به بالا به تومان گرد می‌شود. برای مثال قیمت ۱۰۰٬۰۰۰ با تخفیف ۱۰٪ برابر ۹۰٬۰۰۰ تومان است. خرید، تمدید و حجم اضافه هزینه دارند؛ استعلام‌ها و توقف/فعال‌سازی رایگان هستند.

برای نمایش قیمت ابتدا /plans یا /quote را بخوانید. استعلام، مبلغ را رزرو نمی‌کند. فیلد اختیاری max_amount سقف مجاز کسر است؛ اگر قیمت جدید بالاتر باشد، پاسخ 409 می‌گیرید و خرید انجام نمی‌شود. ارسال قیمت یا درصد تخفیف دلخواه پذیرفته نیست.

IDEMPOTENCY

جلوگیری از خرید و کسر تکراری

در همه POSTهای تغییردهنده (به‌جز /quote) هدر Idempotency-Key الزامی است: ۱۶ تا ۱۰۰ کاراکتر انگلیسی، عدد یا ._:-؛ UUID پیشنهاد می‌شود. یک کلید را پیش از ارسال در دیتابیس خود ذخیره کنید. تکرار همان کلید و همان ورودی، همان عملیات را برمی‌گرداند و دوباره مبلغی کسر یا سرویسی ایجاد نمی‌کند. استفاده از همان کلید برای ورودی متفاوت، خطای 409 است. کلیدها منقضی یا با تغییر کلید API پاک نمی‌شوند.

اگر اتصال قطع شد، از GET /operations/lookup با همان هدر Idempotency-Key استفاده کنید یا دقیقاً همان درخواست را با همان شناسه تکرار کنید. هرگز صرفاً به دلیل timeout شناسه تازه نسازید. پاسخ 202 به معنای موفقیت نهایی نیست: عملیات در حال پردازش یا نیازمند بررسی است. با فاصله حداقل ۵ ثانیه پیگیری کنید؛ برای manual_review با پشتیبانی و شماره عملیات تماس بگیرید. در این وضعیت عملیات تازه تا تعیین تکلیف مسدود است.

API REFERENCE

فهرست کامل endpointها

جست‌وجو در مسیرها و توضیحات

16 مسیر در دسترس

۱۶ مسیر

GET/accountاطلاعات نمایندگی، درصد تخفیف و تاریخ اعتبار کلید

درخواست خواندن؛ بدنه ارسال نکنید.

cURL · GET /account
curl -X GET 'https://ip-sabet.me/wp-json/ips-reseller/v1/account' \
  -H "Authorization: Bearer YOUR_API_KEY"

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

GET/walletمانده قابل مصرف کیف پول به تومان

درخواست خواندن؛ بدنه ارسال نکنید.

cURL · GET /wallet
curl -X GET 'https://ip-sabet.me/wp-json/ips-reseller/v1/wallet' \
  -H "Authorization: Bearer YOUR_API_KEY"

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

GET/plansپلن‌های فعال و قیمت پایه، نمایندگی و همه کشورها

درخواست خواندن؛ بدنه ارسال نکنید.

cURL · GET /plans
curl -X GET 'https://ip-sabet.me/wp-json/ips-reseller/v1/plans' \
  -H "Authorization: Bearer YOUR_API_KEY"

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

GET/countriesکشورهای قابل خرید؛ شناسه صفر برای همه کشورها

درخواست خواندن؛ بدنه ارسال نکنید.

cURL · GET /countries
curl -X GET 'https://ip-sabet.me/wp-json/ips-reseller/v1/countries' \
  -H "Authorization: Bearer YOUR_API_KEY"

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

POST/quoteاستعلام قیمت؛ هیچ مبلغی کسر نمی‌شود

استعلام رایگان؛ Idempotency-Key لازم نیست.

پارامترهای بدنه JSON

actionstringالزامینوع عملیات برای استعلام. order_idintegerاختیاری / وابسته به عملیاتشناسه سفارش متعلق به خودتان؛ برای استعلام تمدید، حجم یا وضعیت لازم است. plan_idintegerاختیاری / وابسته به عملیاتشناسه پلن فعال اشتراکی از GET /plans؛ برای خرید و تمدید الزامی. country_idintegerاختیاری / وابسته به عملیاتشناسه کشور از GET /countries؛ صفر یعنی همه کشورها. فقط خرید. gbintegerاختیاری / وابسته به عملیاتحجم اضافه به گیگابایت؛ عدد صحیح ۱ تا ۱۰۰۰۰.

خرید: action=purchase و plan_id و country_id؛ تمدید: action=renew و order_id و plan_id؛ حجم اضافه: action=extra-volume و order_id و gb؛ توقف/فعال‌سازی: action=disable یا enable و order_id.

cURL · POST /quote
curl -X POST 'https://ip-sabet.me/wp-json/ips-reseller/v1/quote' \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{"action":"purchase","plan_id":1,"country_id":1}'

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

GET/ordersسفارش‌های اشتراکی خودتان؛ page و per_page (۱ تا ۵۰)

درخواست خواندن؛ بدنه ارسال نکنید.

پارامترهای صفحه‌بندی: page=1&per_page=20؛ حداکثر ۵۰ رکورد در صفحه، از جدید به قدیم و فقط برای همین حساب.

cURL · GET /orders
curl -X GET 'https://ip-sabet.me/wp-json/ips-reseller/v1/orders' \
  -H "Authorization: Bearer YOUR_API_KEY"

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

GET/orders/{id}جزئیات سفارش، لینک اشتراک و کانفیگ‌ها

درخواست خواندن؛ بدنه ارسال نکنید.

پارامتر مسیر id عدد صحیح مثبت است؛ شناسه عملیات با شناسه سفارش متفاوت است و باید متعلق به حساب شما باشد.

cURL · GET /orders/{id}
curl -X GET 'https://ip-sabet.me/wp-json/ips-reseller/v1/orders/105' \
  -H "Authorization: Bearer YOUR_API_KEY"

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

GET/orders/{id}/usageوضعیت زنده، مصرف و سقف حجم به بایت و انقضا

درخواست خواندن؛ بدنه ارسال نکنید.

پارامتر مسیر id عدد صحیح مثبت است؛ شناسه عملیات با شناسه سفارش متفاوت است و باید متعلق به حساب شما باشد.

فیلد live_available دریافت داده زنده را مشخص می‌کند. usage.used و usage.limit به بایت هستند. usage.expire زمان Unix به ثانیه یا تاریخ ISO پنل است؛ صفر/خالی می‌تواند به معنی شروع‌نشده یا بدون انقضا باشد.

cURL · GET /orders/{id}/usage
curl -X GET 'https://ip-sabet.me/wp-json/ips-reseller/v1/orders/105/usage' \
  -H "Authorization: Bearer YOUR_API_KEY"

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

POST/ordersخرید کانفیگ اشتراکی از کیف پول

هدر Idempotency-Key الزامی است. پاسخ شامل operation و در صورت وجود order است.

پارامترهای بدنه JSON

plan_idintegerالزامیشناسه پلن فعال اشتراکی از GET /plans؛ برای خرید و تمدید الزامی. country_idintegerالزامیشناسه کشور از GET /countries؛ صفر یعنی همه کشورها. فقط خرید. customer_referencestringاختیاری / وابسته به عملیاتشناسه داخلی مشتری شما، حداکثر ۱۰۰ بایت؛ صرفاً برچسب است و مالکیت سفارش را تغییر نمی‌دهد. max_amountintegerاختیاری / وابسته به عملیاتسقف مجاز کسر به تومان؛ اگر مبلغ نهایی بیشتر باشد، عملیات انجام نمی‌شود.
cURL · POST /orders
curl -X POST 'https://ip-sabet.me/wp-json/ips-reseller/v1/orders' \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f2e5b76-4c13-4be1-9a73-71497c8c41c9" \
  --data '{"plan_id":1,"country_id":1,"customer_reference":"customer-123","max_amount":500000}'

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

POST/orders/{id}/renewتمدید با پلن فعال اشتراکی

هدر Idempotency-Key الزامی است. پاسخ شامل operation و در صورت وجود order است.

پارامتر مسیر id عدد صحیح مثبت است؛ شناسه عملیات با شناسه سفارش متفاوت است و باید متعلق به حساب شما باشد.

پارامترهای بدنه JSON

plan_idintegerالزامیشناسه پلن فعال اشتراکی از GET /plans؛ برای خرید و تمدید الزامی. customer_referencestringاختیاری / وابسته به عملیاتشناسه داخلی مشتری شما، حداکثر ۱۰۰ بایت؛ صرفاً برچسب است و مالکیت سفارش را تغییر نمی‌دهد. max_amountintegerاختیاری / وابسته به عملیاتسقف مجاز کسر به تومان؛ اگر مبلغ نهایی بیشتر باشد، عملیات انجام نمی‌شود.
cURL · POST /orders/{id}/renew
curl -X POST 'https://ip-sabet.me/wp-json/ips-reseller/v1/orders/105/renew' \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f2e5b76-4c13-4be1-9a73-71497c8c41c9" \
  --data '{"plan_id":1,"max_amount":500000}'

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

POST/orders/{id}/extra-volumeخرید حجم اضافه با تخفیف نمایندگی

هدر Idempotency-Key الزامی است. پاسخ شامل operation و در صورت وجود order است.

پارامتر مسیر id عدد صحیح مثبت است؛ شناسه عملیات با شناسه سفارش متفاوت است و باید متعلق به حساب شما باشد.

پارامترهای بدنه JSON

gbintegerالزامیحجم اضافه به گیگابایت؛ عدد صحیح ۱ تا ۱۰۰۰۰. customer_referencestringاختیاری / وابسته به عملیاتشناسه داخلی مشتری شما، حداکثر ۱۰۰ بایت؛ صرفاً برچسب است و مالکیت سفارش را تغییر نمی‌دهد. max_amountintegerاختیاری / وابسته به عملیاتسقف مجاز کسر به تومان؛ اگر مبلغ نهایی بیشتر باشد، عملیات انجام نمی‌شود.
cURL · POST /orders/{id}/extra-volume
curl -X POST 'https://ip-sabet.me/wp-json/ips-reseller/v1/orders/105/extra-volume' \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f2e5b76-4c13-4be1-9a73-71497c8c41c9" \
  --data '{"gb":10,"max_amount":100000}'

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

POST/orders/{id}/disableتوقف سرویس فعال؛ رایگان؛ زمان اعتبار متوقف نمی‌شود

هدر Idempotency-Key الزامی است. پاسخ شامل operation و در صورت وجود order است.

پارامتر مسیر id عدد صحیح مثبت است؛ شناسه عملیات با شناسه سفارش متفاوت است و باید متعلق به حساب شما باشد.

پارامترهای بدنه JSON

customer_referencestringاختیاری / وابسته به عملیاتشناسه داخلی مشتری شما، حداکثر ۱۰۰ بایت؛ صرفاً برچسب است و مالکیت سفارش را تغییر نمی‌دهد. max_amountintegerاختیاری / وابسته به عملیاتسقف مجاز کسر به تومان؛ اگر مبلغ نهایی بیشتر باشد، عملیات انجام نمی‌شود.
cURL · POST /orders/{id}/disable
curl -X POST 'https://ip-sabet.me/wp-json/ips-reseller/v1/orders/105/disable' \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f2e5b76-4c13-4be1-9a73-71497c8c41c9" \
  --data '{}'

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

POST/orders/{id}/enableفعال‌سازی سرویس متوقف دارای حجم و زمان؛ رایگان

هدر Idempotency-Key الزامی است. پاسخ شامل operation و در صورت وجود order است.

پارامتر مسیر id عدد صحیح مثبت است؛ شناسه عملیات با شناسه سفارش متفاوت است و باید متعلق به حساب شما باشد.

پارامترهای بدنه JSON

customer_referencestringاختیاری / وابسته به عملیاتشناسه داخلی مشتری شما، حداکثر ۱۰۰ بایت؛ صرفاً برچسب است و مالکیت سفارش را تغییر نمی‌دهد. max_amountintegerاختیاری / وابسته به عملیاتسقف مجاز کسر به تومان؛ اگر مبلغ نهایی بیشتر باشد، عملیات انجام نمی‌شود.
cURL · POST /orders/{id}/enable
curl -X POST 'https://ip-sabet.me/wp-json/ips-reseller/v1/orders/105/enable' \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f2e5b76-4c13-4be1-9a73-71497c8c41c9" \
  --data '{}'

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

GET/operationsتراکنش‌ها با قیمت و درصد تخفیف ثبت‌شده؛ page و per_page

درخواست خواندن؛ بدنه ارسال نکنید.

پارامترهای صفحه‌بندی: page=1&per_page=20؛ حداکثر ۵۰ رکورد در صفحه، از جدید به قدیم و فقط برای همین حساب.

cURL · GET /operations
curl -X GET 'https://ip-sabet.me/wp-json/ips-reseller/v1/operations' \
  -H "Authorization: Bearer YOUR_API_KEY"

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

GET/operations/{id}پیگیری نتیجه عملیات؛ بدون اجرای مجدد

درخواست خواندن؛ بدنه ارسال نکنید.

پارامتر مسیر id عدد صحیح مثبت است؛ شناسه عملیات با شناسه سفارش متفاوت است و باید متعلق به حساب شما باشد.

cURL · GET /operations/{id}
curl -X GET 'https://ip-sabet.me/wp-json/ips-reseller/v1/operations/42' \
  -H "Authorization: Bearer YOUR_API_KEY"

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

GET/operations/lookupبازیابی عملیات با هدر Idempotency-Key پس از قطع ارتباط

درخواست خواندن؛ بدنه ارسال نکنید.

هدر Idempotency-Key همان درخواست اولیه الزامی است؛ کلید جدید نسازید.

cURL · GET /operations/lookup
curl -X GET 'https://ip-sabet.me/wp-json/ips-reseller/v1/operations/lookup' \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: 4f2e5b76-4c13-4be1-9a73-71497c8c41c9"

ساختار پاسخ و وضعیت عملیات · راهنمای خطاها

مسیری پیدا نشد. عبارت کوتاه‌تر یا نام انگلیسی مسیر را جست‌وجو کنید.

EXAMPLES

نمونه خرید و پیگیری با cURL

نمونه درخواست / پاسخ
curl -X POST "https://ip-sabet.me/wp-json/ips-reseller/v1/orders" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f2e5b76-4c13-4be1-9a73-71497c8c41c9" \
  --data '{"plan_id":1,"country_id":1,"customer_reference":"customer-123","max_amount":500000}'
نمونه درخواست / پاسخ
curl "https://ip-sabet.me/wp-json/ips-reseller/v1/operations/lookup" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: 4f2e5b76-4c13-4be1-9a73-71497c8c41c9"
RESPONSES

ساختار پاسخ‌ها

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

نمونه درخواست / پاسخ
{
    "data": {
        "operation": {
            "id": 42,
            "action": "purchase",
            "state": "succeeded",
            "order_id": 105,
            "base_amount": 100000,
            "discount_percent": 10,
            "amount": 90000,
            "currency": "IRT",
            "customer_reference": "customer-123",
            "error_code": null,
            "created_at": "2026-09-24 12:00:00",
            "updated_at": "2026-09-24 12:00:02"
        },
        "order": {
            "id": 105,
            "code": "RS-42-EXAMPLE",
            "plan_id": 1,
            "country_id": 1,
            "status": "on_hold",
            "amount": 90000,
            "currency": "IRT",
            "subscription_url": "https://example.com/sub/PRIVATE",
            "links": [],
            "created_at": "2026-09-24 12:00:00"
        }
    }
}

در پاسخ /account، مقدار discount_percent تخفیف فعال است. discount_source منبع دستی یا خودکار، discount_expires_at پایان اعتبار تخفیف به UTC و stars سطح حساب را نشان می‌دهد. اعتبار تهی یعنی تخفیف پایه یا دستی بدون انقضای زمانی. استعلام قیمت را پیش از هر خرید تازه بگیرید.

فهرست‌ها به صورت data: {items: [], page: 1, per_page: 20, total: 0, total_pages: 0} هستند. پاسخ استعلام شامل request، base_amount، discount_percent، amount و currency است. تاریخ‌های عملیات به منطقه زمانی سایت و تاریخ اعتبار/آخرین استفاده کلید به UTC هستند.

reserved / processingثبت یا پردازش؛ نتیجه قطعی نیست و رزرو مالی ممکن است انجام شده باشد.succeededعملیات با موفقیت ثبت و تحویل شده است.manual_review / refund_reviewنتیجه سرویس یا کیف پول نامشخص است؛ مدیریت باید بررسی کند. خرید یا بازپرداخت خودکار تکرار نمی‌شود.failed / refundedعملیات بدون تحویل تعیین تکلیف شده؛ کسر تأیید نشده یا وجه آزاد/بازپرداخت شده است. با همان شناسه تکرار نخواهد شد.
ERRORS

خطاها و محدودیت‌ها

نمونه درخواست / پاسخ
{"code":"ipsr_insufficient_balance","message":"موجودی کیف پول کافی نیست.","data":{"status":402}}
HTTPمعنا
400ورودی، پلن، کشور، شناسه یکتا یا حجم نامعتبر؛ gb عدد صحیح ۱ تا ۱۰۰۰۰ است.
401کلید نامعتبر، لغوشده یا منقضی.
402موجودی کافی نیست؛ از پنل سایت شارژ کنید.
403حساب تأیید نشده/مسدود، IP غیرمجاز یا اتصال بدون HTTPS.
404سفارش/عملیات وجود ندارد یا متعلق به شما نیست.
409تداخل شناسه یکتا، تغییر قیمت، قفل حساب، وضعیت سرویس نامعتبر، فروش متوقف یا عملیات تعیین‌تکلیف‌نشده.
413بدنه بیش از ۸ کیلوبایت.
415Content-Type نامعتبر.
429بیش از ۶۰ درخواست در دقیقه.
503کیف پول، پنل یا ذخیره‌سازی موقتاً در دسترس نیست؛ وضعیت را با همان شناسه پیگیری کنید.

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

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

از پنل نمایندگی شروع کنید.

کلیدها، سفارش‌ها و عملیات شما در یک فضای مشخص.

ورود به پنل
وب‌سرویس آی‌پی ثابت من