Vitamin API arayışı
VPN hesablarını və virtual serverləri öz saytınızdan, botunuzdan və ya skriptinizdən satın və idarə edin.
Baza URLhttps://apiservice.vitamindata.net/api/v1
Açarlar panelinizdə verilir. Bölməni görmürsünüzsə, hesabınız üçün API girişinin açılmasını dəstəkdən istəyin.
1Panelinizdə API açarı yaradın və hər çağırışda onu bearer token kimi göndərin.
2Açarın işlədiyini sübut etmək üçün Ping çağırın, sonra qiymətlərinizi ListPlans və GetVPSStorefront ilə götürün.
3FUNDING_AUTO ilə satın: balansınız yetirsə o ödəyir, yetmirsə müştəriniz ödəniş keçidi alır.
Autentifikasiya
Hər sorğu açarınızı bearer token kimi daşıyır. Bu hostda kuki yoxdur və götürüləsi CSRF tokeni də yoxdur — açar tək başına bütöv etimadnamədir.
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Açarlar panelinizdə API bölməsində yaradılır. Gizli dəyər yaradılan anda yalnız bir dəfə göstərilir: biz onun yalnız heşini saxlayırıq, ona görə itirilsə, həll yolu açarı rotasiya etməkdir — bu, yeni gizli dəyər verir və köhnəsini bir gün də işlək saxlayır, beləliklə fasiləsiz yerləşdirmə edə bilərsiniz.
Açar müəyyən mənbə ünvanları ilə məhdudlaşdırıla, öz dəqiqəlik sürət limitinə sahib ola və ondan ayrı-ayrı əməliyyatlar əsirgənə bilər. Bunları operatorlarımız tənzimləyir — məsələn, ala bilən, amma heç bir xidməti silə bilməyən açar lazımdırsa, dəstəklə danışın.
Test açarları
sk_test_ ilə başlayan açar real məlumatları oxuyur, ancaq pul xərcləyən və ya real maşına toxunan heç nəyi qəbul etmir; beləliklə inteqrasiyanızı heç bir xərcə düşmədən qurub yoxlaya bilərsiniz.
Xəta necə görünür
Naməlum açar və API girişi olmayan hesabın açarı eyni 401 cavabını verir, söz-söz: cavab açarın mövcud olub-olmadığını heç vaxt təsdiqləmir. Rotasiya keçid müddətini yaşamış öz açarınız istisnadır — o, api key expired deyir, çünki həmin açarın real olduğunu siz onsuz da bilirsiniz və nəyə görə dayandığını bilməlisiniz. Bir ünvandan gələn təkrar uğursuzluqlar məhdudlaşdırılır — sürət limitlərinə baxın.
Ödəniş üsulları
Aldığınız hər şey — VPN hesabı, uzatma, server, yeniləmə, təkmilləşdirmə — tək bir müqavilədən keçir. Ödənişin necə olacağını siz seçirsiniz:
funding | Nə baş verir |
|---|
FUNDING_AUTO | Tövsiyə olunur. Balansınız yetirsə oradan tutulur; yetmirsə çağırış yenə də uğurla başa çatır və sizə ödəniş keçidi verir. Tək çağırış, şərh ediləsi xəta yoxdur. |
FUNDING_BALANCE | Yalnız balans. Balans çatmırsa, çağırış insufficient_balance ilə UĞURSUZ olur (xəta yenə də ödəniləsi keçid daşıyır). |
FUNDING_INVOICE | Balansınız yetsə belə, həmişə ödəniş keçidi qaytarır. |
FUNDING_AUTO ilə tək bir sahəyə baxırsınız:
{"order": {...}, "paid": true, "status": "completed"}
{"order": {...}, "status": "payment_required",
"invoice": {"invoice_id": "inv_9m2r4t",
"pay_url": "https://pay.example.com/i/inv_9m2r4t",
"price_usd": "11.90", "expires_at": "1785499200"}}
completed pulun alındığını və çatdırılmanın başladığını bildirir — statusu delivered olana qədər GetOrder çağırışını yoxlayın. payment_required isə müştərinizi pay_url ünvanına yönləndirin; faktura ödəniləndə çatdırılma öz-özünə başlayır.
Qiymətlər həmişə bizimdir. Zəmanət kimi expected_total_usd göndərə bilərsiniz: bizim təzə hesablamamız fərqlidirsə, satış price_changed və yeni məbləğlə rədd edilir — müştərinizin heç görmədiyi bir məbləğ tutulmur.
Təhlükəsiz təkrar cəhd
Pul xərcləyən hər çağırışda Idempotency-Key başlığı göndərin. Cavab sizə heç çatmasa — vaxt aşımı, qopan bağlantı, yenidən yerləşdirilən işçi proses — EYNİ sorğunu EYNİ açarla təkrar göndərin: ikinci bir tutulma əvəzinə ilk nəticəni geri alırsınız.
Idempotency-Key: 8f14e45f-ea6d-4b3a-9c1b-2f0d5a7e91c3
Hər müştəri əməliyyatı üçün təzə açar işlədin (UUID idealdır). Eyni açarı fərqli gövdə ilə təkrar işlətmək idempotency_conflict ilə rədd edilir — bu birləşmə səhv deməkdir və hansı sorğunu nəzərdə tutduğunuzu təxmin etmək, bunu sizə deməkdən daha pis olardı.
Sürət limitləri
Hər autentifikasiya olunmuş cavab açarınızın harada dayandığını bildirir:
RateLimit-Limit: 6000
RateLimit-Remaining: 5987
RateLimit-Policy: 6000;w=60
Limit açar başına və dəqiqə başınadır, hesabınız üçün tənzimlənir — susmaya görə dəyər bir mağazaya uyğundur; məşğul bot susmaya görə dəyərlə özünü ləngitmək əvəzinə artırım istəməlidir. Limiti aşmaq Retry-After ilə birlikdə 429 cavabı verir.
Bir ünvandan çoxlu sorğu autentifikasiyadan keçmirsə də 429 görünür. Bu, sizin kvotanız deyil, kobud güc hücumundan qorunmadır: özü-özünə keçir (başlıq nə vaxt olduğunu deyir) və işlək açar heç vaxt onu işə salmır.
Açar olmayan cavablar da daxil olmaqla, hər cavabda X-Ratelimit-* ailəsini də görəcəksiniz. O, sizin açarınızın büdcəsi deyil, bütün API-nin qarşısındakı kobud ÜNVAN başına əyləcdir — RateLimit-Remaining göstəricisinə görə tempinizi tənzimləyin və X- başlıqlarını başqasının işi kimi qəbul edin.
Xətalar
Uğursuzluqlar HTTP statusu və JSON gövdəsi kimi geri qayıdır. Yuxarı səviyyəli code nəqliyyat kateqoriyasıdır; yuxarı səviyyəli message isə sabit maşın kodunu daşıyır. Tam təfərrüat — həmin maşın kodu, təhlükəsiz bir cümlə və hər hansı faydalı əlavə — details daxilində debug altında gəlir:
{"code": "failed_precondition",
"message": "insufficient_balance",
"details": [{"type": "neopay.seller.publicapi.v1.ErrorInfo",
"value": "CgptZXNzYWdl…",
"debug": {"code": "insufficient_balance",
"message": "insufficient balance",
"payUrl": "https://pay.example.com/i/inv_9m2r4t",
"orderId": "ord_8c3d1e",
"totalUsd": "11.90"}}]}
Xəta kanalının kod yazmağa dəyən iki özəlliyi var: value base64 protobuf-dur (nəzərə almayın — debug oxuyun) və debug daxilində əlavə sahələr lowerCamelCase-dir — payUrl, orderId, totalUsd, retryAfterSeconds — bu, hər yerdəki snake_case-dən fərqli olaraq bir Connect qaydasıdır. Yuxarı səviyyəli message və ya debug.code üzərində budaqlanın; heç vaxt cümlə üzərində yox.
Sorğunuz avtorizasiyadan keçməzdən əvvəlki imtinalar
İşləyiciyə heç çatmayan sorğu — açar yoxdur və ya səhvdir (401), açarın icazə vermədiyi mənbə ünvanı (403), sürət limiti (429), autentifikasiya kəsintisi (503) — giriş qapısında rədd edilir və giriş qapısı DAHA QISA gövdə qaytarır: nəqliyyat code dəyəri və sadə bir cümlə, details olmadan və maşın kodu olmadan.
{"code": "unauthenticated", "message": "invalid api key"}
Ona görə bunlarda HTTP STATUSUNA görə budaqlanın (və 429 zamanı Retry-After başlığına əməl edin); aşağıdakı maşın kodları isə işləyiciyə qədər gedə bilmiş çağırışlara aiddir. Ünvan başına kobud əyləc daha köhnədir və {"error":"rate_limited"} cavabı verir — açarı code deyil, error-dur.
| Kod | Mənası | Nə etməli |
|---|
forbidden_scope | Açarda bu çağırış üçün əhatə dairəsi yoxdur, ya da bu əməliyyat ondan əsirgənib. | Açarın səlahiyyətini genişləndirməyi dəstəkdən istəyin. |
not_found | Bu hesab üçün belə obyekt yoxdur. | Id-ni yoxlayın. Yad id də bu cavabı verir — bu, qəsdəndir. |
invalid_request | Sahələrdən biri düzgün formatda deyil. | Düzəldib yenidən göndərin; dəyişdirmədən təkrar cəhd kömək etməyəcək. |
insufficient_balance | Yalnız balansla ödəniş məbləği qarşılaya bilmədi. | Təfərrüatdakı payUrl ünvanını işlədin, ya da FUNDING_AUTO üsuluna keçin. |
price_changed | expected_total_usd dəyəriniz artıq uyğun gəlmir. | Yenidən qiymət alın və yeni məbləği müştərinizlə təsdiqləyin. |
idempotency_conflict | Həmin açar fərqli bir gövdə ilə işlədilib. | Hər əməliyyat üçün təzə açar işlədin. |
sandbox_unavailable | sk_test_ açarı pul xərcləməyə və ya real maşına toxunmağa cəhd etdi. | Gözlənilən haldır — həmin çağırış üçün canlı açar işlədin. Test açarları oxuyur, heç vaxt almır. |
unpriceable | İstədiyiniz konfiqurasiya satıla bilməz — qiyməti təyin edilməmiş plan yaxud node, ya da heç bir modelin əhatə etmədiyi bir səbət. | Almazdan əvvəl vitrini yenidən oxuyun və qiymət alın; qiymət hesablaması da eyni səbəti rədd edir. |
upstream_unavailable | Asılı olduğumuz müstəvilərdən biri işləmir. | Geriləmə ilə təkrar cəhd edin; oxunuşlar qısa müddət köhnə ola bilər. |
order_failed | Ödənişdən sonra çatdırılma baş tutmadı. | Yenidən almayın. GetOrder çağırışını yoxlayın; biz bunları avtomatik bərpa edirik və dəstək də bunu görür. |
internal | Bizim tərəfdə təsnif etmədiyimiz nəsə sındı. | Geriləmə ilə bir dəfə təkrar cəhd edin; təkrarlanırsa, X-Request-Id dəyərini dəstəyə bildirin. |
Qaydalar
- Nəqliyyat. Hər çağırış JSON gövdəsi ilə
POST {base}/{Method} şəklindədir — POST /api/v1/CreateVPNOrder. Başqa heç nə yoxdur: istənilən digər HTTP metodu 405 cavabı verir, REST feil uyğunlaşdırması yoxdur və yol parametrləri yoxdur. - Pul sətirdir.
"19.99", heç vaxt 19.99 deyil: JSON ədədi əksər dillərdə float-dur və qəpiyi dəqiq saxlaya bilmir. - 64 bitlik tam ədədlər sətir kimi gəlir. Hər bayt sayı və hər unix zaman möhürü 64 bitlikdir və şəbəkə onları dırnağa alır —
"remaining_bytes": "96636764160". Onları tam ədəd kimi oxuyun; sorğularda hər iki formanı göndərə bilərsiniz. - Sıfır buraxılır. Dəyəri
0, false və ya boş olan sahə cavabda ümumiyyətlə görünmür. Yoxluğu sıfır kimi qəbul edin — və unutmayın ki, 0 gündəlik limit "0 GB" deyil, limitin OLMAMASI deməkdir. - Vaxtlar unix saniyəsidir, əməliyyat pəncərəsi istisna olmaqla — o, RFC3339 və ya
YYYY-MM-DD qəbul edir və qaytarır. - Trafik baytdır, bütün göstəricilərdə, heç vaxt qigabayt deyil.
- Id-lər qapalıdır.
acc_…, ord_…, vpn_…. Heç vaxt onları ayırıb oxumayın və ya özünüz yaratmayın, ardıcıl olduqlarını da fərz etməyin. - Səhifələmə qapalı kursorla aparılır: əvvəlki cavabın
next_cursor dəyərini geri göndərin. Boş next_cursor hər şeyi aldığınızı bildirir. - Sahə cədvəlləri qısa tip işarələri işlədir.
money — dəqiq onluq sətir; unix — unix saniyəsi (64 bitlik, ona görə sətir); bytes — bayt sayı (64 bitlik, ona görə sətir); int64 — başqa hər hansı 64 bitlik dəyər (sətir); int — 32 bitlik, adi ədəd; cursor — qapalı səhifələmə tutacağı; enum — sadalanan dəyərlərdən düz biri. - Yeni sahələr xəbərdarlıqsız peyda olur və mövcud olanların mənası dəyişmir. Tanımadığınızı nəzərə almayın.
Başlanğıc
İlk edəcəyiniz tək çağırış: o, açarın işlədiyini sübut edir və hansı hesaba aid olduğunu bildirir.
https://apiservice.vitamindata.net/api/v1/PingHesab id-nizi, açarın canlı yoxsa test olduğunu və bizim saatımızı qaytarır.
Sorğu
Parametr yoxdur — boş obyekt göndərin, {}.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/Ping \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{}'
Cavab200 · application/json
account_idstring
Açarın hesabı — açarın tanındığının sübutu.
modeenum
Hansı növ açar göndərdiyiniz.
Bunlardan biri:livetest
server_timeunix
Bizim saatımız — imzaları və ya pəncərələri pozmazdan əvvəl sürüşməni aşkar etmək üçün faydalıdır.
Nümunə cavab{
"account_id": "acc_9f3k2m7q",
"mode": "live",
"server_time": "1785412800"
}
Hesab və balans
https://apiservice.vitamindata.net/api/v1/GetAccountHesabınızın e-poçtu, statusu, dili və ünvanın təsdiqlənib-təsdiqlənmədiyi.
Sorğu
Parametr yoxdur — boş obyekt göndərin, {}.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/GetAccount \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{}'
Cavab200 · application/json
account.account_idstring
Açıq id (acc_…).
account.emailstring
Giriş ünvanı.
account.statusstring
Hesab məhdudlaşdırılmayıbsa active.
account.localestring
Hesabın dili — kart adları və bildirişlər ona uyğun tərcümə olunur.
account.email_verifiedbool
Ünvan təsdiqlənib.
account.created_atunix
Hesabın yaradıldığı vaxt.
Nümunə cavab{
"account": {
"account_id": "acc_9f3k2m7q",
"email": "dev@example.com",
"status": "active",
"locale": "en",
"email_verified": true,
"created_at": "1769000000"
}
}
https://apiservice.vitamindata.net/api/v1/GetBalanceMühasibat balansınız və alışın həqiqətən istifadə edə biləcəyi məbləğ.
available_usd almazdan əvvəl baxılası rəqəmdir — o, icrada olan sifariş tərəfindən artıq bloklanmış məbləği çıxarır.
Sorğu
Parametr yoxdur — boş obyekt göndərin, {}.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/GetBalance \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{}'
Cavab200 · application/json
balance_usdmoney
Tam mühasibat balansı.
available_usdmoney
Balans mənfi bloklar — alışın indi xərcləyə biləcəyi məbləğ.
as_ofstring
Göstəricilərin mühasibat zaman möhürü, RFC3339.
Nümunə cavab{
"balance_usd": "72.60",
"available_usd": "60.70",
"as_of": "2026-07-29T12:00:00Z"
}
https://apiservice.vitamindata.net/api/v1/ListTransactionsMühasibat qeydləriniz, ən yenisi əvvəldə.
Susmaya görə son üç ay. 92 gündən geniş pəncərə daraldılır və cavab sizə həqiqətən tətbiq olunan pəncərəni bildirir — beləliklə qısa cavab heç vaxt qeyri-müəyyən olmur.
Sorğu
limitintkönüllü
Səhifə ölçüsü. Susmaya görə 25, maksimum 100.
cursorcursorkönüllü
Əvvəlki cavabın next_cursor dəyəri. İlk səhifə üçün onu buraxın.
kindstringkönüllü
Aşağıdakı kind dəyərləri üzrə könüllü, vergüllə ayrılmış filtr.
fromstringkönüllü
Pəncərənin başlanğıcı, RFC3339 və ya YYYY-MM-DD.
tostringkönüllü
Pəncərənin sonu. Yalnız tarixdən ibarət to həmin bütün günü əhatə edir.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/ListTransactions \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"limit":25,"cursor":"","kind":"topup_credit,invoice_debit_reserved","from":"2026-05-01","to":"2026-07-30"}'
Cavab200 · application/json
transactionsarray
Mühasibat sətirləri.
transactions[].idstring
Mühasibat sətrinin id-si.
transactions[].tsstring
Nə vaxt, RFC3339.
transactions[].kindenum
Pulu nəyin hərəkət etdirdiyi. topup_credit ödənilmiş balans artırmadır; iki invoice_debit_* növü isə alışlardır. İcrada olan sifarişin daxili bloklaması və azad edilməsi bu axına daxil deyil.
Bunlardan biri:topup_creditexternal_creditinvoice_debit_reservedinvoice_debit_externaloverpay_creditmanual_creditmanual_debitspend_debitspend_refundautomated_correction
transactions[].amount_usdmoney
İşarəli — mədaxildə mənfi.
transactions[].balance_after_usdmoney
Bu sətirdən sonrakı cari balans.
transactions[].ref_invoice_idstring
Hərəkətin arxasındakı faktura — tam mənzərə üçün onu GetInvoice çağırışına verin.
transactions[].descriptionstring
Qısa, insan üçün etiket. Yalnız göstərmək üçündür; heç vaxt ona görə budaqlanmayın.
next_cursorcursor
Növbəti səhifə üçün onu cursor kimi geri göndərin. Yoxdursa/boşdursa — hər şeyi almısınız.
has_morebool
Bu səhifədən sonra daha sətirlər var.
fromstring
HƏQİQƏTƏN tətbiq olunan pəncərə (RFC3339). İstədiyinizdən dardırsa ⇒ 92 günlük limitə çatmısınız.
tostring
Tətbiq olunan pəncərənin sonu.
Nümunə cavab{
"transactions": [
{"id": "tx_01j9zq", "ts": "2026-07-28T09:14:03Z", "kind": "invoice_debit_reserved",
"amount_usd": "-11.90", "balance_after_usd": "72.60",
"ref_invoice_id": "inv_5k8p2q", "description": "order ord_7b2c9d"},
{"id": "tx_01j8xw", "ts": "2026-07-25T18:40:11Z", "kind": "topup_credit",
"amount_usd": "50.00", "balance_after_usd": "84.50", "ref_invoice_id": "inv_3d1x8n"}
],
"from": "2026-04-30T00:00:00Z",
"to": "2026-07-29T23:59:59Z"
}
POST
CreateTopup
buyIdempotency-Key
https://apiservice.vitamindata.net/api/v1/CreateTopupBalansınıza vəsait əlavə edən, ödəniləsi faktura yaradır.
Müştərinizi (və ya özünüzü) invoice.pay_url ünvanına yönləndirin. Balans ödəniş edildikdə dəyişir.
Sorğu
amount_usdmoneyməcburi
Nə qədər əlavə ediləcəyi, onluq sətir kimi.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/CreateTopup \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"amount_usd":"50.00"}'
Cavab200 · application/json
invoiceobject
Ödəniləsi faktura.
invoice.invoice_idstring
Şlüzün faktura id-si (inv_…).
invoice.statusenum
pending ödəniləndir. confirmed ilə delivered_redirected arasındakı hər şey pulun geri dönməz şəkildə daxil olduğunu bildirir — onların hamısını ÖDƏNİLMİŞ sayın. expired keçidin ödənilmədən müddətinin bitdiyini bildirir.
Bunlardan biri:pendingconfirmedsweepingsweptdeliveringdelivereddelivered_redirectedexpired
invoice.pay_urlstring
Hostlanan ödəniş səhifəsi. Müştərinizi bura göndərin; hər kanal (coin, zəncir, balans) onun arxasındadır.
invoice.pay_telegram_urlstring
Elə həmin faktura, Telegram daxilində ödəniləsi: o, ödəniş provayderinin öz botunu açır, bot məbləği göstərir və ödənişi orada qəbul edir. Tətbiqdən çıxmaq istəməyən müştərilər üçün onu pay_url ilə yan-yana təklif edin. Olmaya bilər — yalnız botu konfiqurasiya edilmiş ödəniş provayderində olur, ona görə onu heç vaxt yeganə ödəniş düyməniz etməyin.
invoice.price_usdmoney
Fakturanın topladığı məbləğ.
invoice.expires_atunix
Ödəniş pəncərəsinin bağlandığı vaxt.
Nümunə cavab{
"invoice": {
"invoice_id": "inv_3d1x8n",
"status": "pending",
"pay_url": "https://pay.example.com/i/inv_3d1x8n",
"pay_telegram_url": "https://t.me/VitaminPayBot?start=3d1x8n",
"price_usd": "50.00",
"expires_at": "1785499200"
}
}
https://apiservice.vitamindata.net/api/v1/GetInvoiceBir ödəniş tam təfərrüatı ilə, zəncirin göstərdikləri də daxil olmaqla.
Mühasibat sətrindəki ref_invoice_id birləşdirmə açarıdır. Yalnız öz hesabınızın yaratdığı fakturalar oxuna bilər.
Sorğu
invoice_idstringməcburi
Mühasibat sətrinin ref_invoice_id dəyərindən, sifarişdən və ya balans artırmadan.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/GetInvoice \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"invoice_id":"inv_5k8p2q"}'
Cavab200 · application/json
invoiceobject
Fakturanın özü.
invoice.invoice_idstring
Şlüzün faktura id-si (inv_…).
invoice.statusenum
pending ödəniləndir. confirmed ilə delivered_redirected arasındakı hər şey pulun geri dönməz şəkildə daxil olduğunu bildirir — onların hamısını ÖDƏNİLMİŞ sayın. expired keçidin ödənilmədən müddətinin bitdiyini bildirir.
Bunlardan biri:pendingconfirmedsweepingsweptdeliveringdelivereddelivered_redirectedexpired
invoice.pay_urlstring
Hostlanan ödəniş səhifəsi. Müştərinizi bura göndərin; hər kanal (coin, zəncir, balans) onun arxasındadır.
invoice.pay_telegram_urlstring
Elə həmin faktura, Telegram daxilində ödəniləsi: o, ödəniş provayderinin öz botunu açır, bot məbləği göstərir və ödənişi orada qəbul edir. Tətbiqdən çıxmaq istəməyən müştərilər üçün onu pay_url ilə yan-yana təklif edin. Olmaya bilər — yalnız botu konfiqurasiya edilmiş ödəniş provayderində olur, ona görə onu heç vaxt yeganə ödəniş düyməniz etməyin.
invoice.price_usdmoney
Fakturanın topladığı məbləğ.
invoice.expires_atunix
Ödəniş pəncərəsinin bağlandığı vaxt.
paymentsarray
Zəncirin göstərdikləri. Balansdan ödənilmiş faktura üçün boşdur (zəncir iştirak etməyib) və hələ heç kim ödəməyibsə də boşdur — boş siyahı xəta deyil.
payments[].chainstring
Ödənişin gəldiyi şəbəkə (tron, bsc, …).
payments[].assetstring
Nə ödənilib (USDT, …).
payments[].amountmoney
Aktivin məbləği, dəqiq.
payments[].tx_hashstring
Zəncir üzərindəki əməliyyat — müştərinizin ödəniş sübutu.
payments[].confirmedbool
Zəncir onu yekunlaşdırıb.
payments[].seen_atunix
Onu ilk dəfə müşahidə etdiyimiz vaxt.
order_idstring
Fakturanın nə aldığı. Heç nə almayan balans artırmada yoxdur.
Nümunə cavab{
"invoice": {
"invoice_id": "inv_5k8p2q",
"status": "confirmed",
"pay_url": "https://pay.example.com/i/inv_5k8p2q",
"price_usd": "11.90",
"expires_at": "1785499200"
},
"payments": [
{"chain": "tron", "asset": "USDT", "amount": "11.90",
"tx_hash": "c4a1f09e2b7d", "confirmed": true, "seen_at": "1785412920"}
],
"order_id": "ord_7b2c9d"
}
Qiymətlər
Burada heç nə yaradılmır — müştəriniz qərar verməzdən əvvəl istədiyiniz qədər qiymət ala bilərsiniz.
https://apiservice.vitamindata.net/api/v1/ListPlansNə sata bilərsiniz: sürgünün hədləri və vitriniz onlardan istifadə edirsə, sabit qiymətli kartlar.
Hansı doludursa onu göstərin. Kart öz bundle_id dəyərini səbətə qoymaqla alınır; sürgülü səbət isə gb/months/users işlədir.
Sorğu
Parametr yoxdur — boş obyekt göndərin, {}.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/ListPlans \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{}'
Cavab200 · application/json
model_namestring
Vitrinizin qiymət modeli.
model_typestring
Onun mühərrik versiyası.
boundsobject
Konfiqurasiya edicinin qaydaları — hər qiymət hesablaması və sifariş onları server tərəfdə yenidən yoxlayır.
bounds.gb_minint
Səbətin istəyə biləcəyi ən kiçik trafik.
bounds.gb_maxint
Ən böyüyü.
bounds.gb_stepint
Sürgünün addımı.
bounds.users_minint
Eyni anda ən az cihaz.
bounds.users_maxint
Ən çoxu.
bounds.months_minint
Ən qısa müddət.
bounds.months_maxint
Ən uzunu.
bounds.new_accounts_maxint
Bir sifarişin yarada biləcəyi ən çox hesab.
bounds.extend_maxint
Bir sifarişin uzada biləcəyi ən çox hesab.
bounds.default_gbint
Ağlabatan sürgü başlanğıcı.
bounds.default_usersint
Susmaya görə cihaz sayı.
bounds.default_monthsint
Susmaya görə müddət.
bundlesarray
Sabit qiymətli kartlar, vitriniz kart kataloqu olduqda.
bundles[].bundle_idstring
cart.bundle_id sahəsinə qoyulası tutacaq.
bundles[].namestring
Kartın adı, hesabın dilinə artıq uyğunlaşdırılmış halda.
bundles[].gbint
Daxil olan trafik.
bundles[].monthsint
Etibarlılıq müddəti.
bundles[].online_usersint
Eyni anda qoşulan cihaz sayı.
bundles[].price_usdmoney
Qiymət. Elə qiymət BUDUR — kart üçün ayrıca hesablama lazım deyil.
bundles[].highlightbool
Vitrinin önə çıxarılan kartı.
bundles[].daily_cap_gbint
GB ilə gündəlik limit. Yoxdursa — limit yoxdur.
Nümunə cavab{
"model_name": "vpn_dynamic",
"model_type": "dynamic_v2",
"bounds": {
"gb_min": 10, "gb_max": 500, "gb_step": 10,
"users_min": 1, "users_max": 10,
"months_min": 1, "months_max": 12,
"new_accounts_max": 5, "extend_max": 10,
"default_gb": 100, "default_users": 3, "default_months": 1
},
"bundles": [
{"bundle_id": "card_100_1m", "name": "100 GB · 1 month", "gb": 100, "months": 1,
"online_users": 3, "price_usd": "11.90", "highlight": true}
]
}
https://apiservice.vitamindata.net/api/v1/QuoteVPN səbətinin son qiyməti, maddələr üzrə. Endirimlər artıq tətbiq olunub.
Sorğu
cartobjectməcburi
Qiymətləndiriləcək səbət.
cart.kindenumməcburi
Yeni hesablar alın, ya da mövcudlara trafik və vaxt əlavə edin.
Bunlardan biri:newextend
cart.gbintkönüllü
Hesab başına trafik, GB ilə, ListPlans hədləri daxilində.
cart.monthsintkönüllü
Hesab başına etibarlılıq, ay ilə.
cart.usersintkönüllü
Hesab başına eyni anda qoşulan cihaz sayı.
cart.new_accountsintkönüllü
Yalnız kind:"new": neçə hesab yaradılacağı. İstifadəçi adları serverdə yaradılır.
cart.extend_vpn_idsarraykönüllü
Yalnız kind:"extend": uzadılacaq hesablar, açıq id ilə.
cart.bundle_idstringkönüllü
ListPlans.bundles siyahısından konfiqurasiya edilmiş səbət əvəzinə sabit qiymətli kart alır. Təyin ediləndə gb/months/users nəzərə alınmır — kartın öz dəyərləri və qiyməti tətbiq olunur.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/Quote \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"cart":{"kind":"new","gb":100,"months":1,"users":3,"new_accounts":2}}'
Bu sorğunun digər formalarıArtıq sahib olduğunuz hesabları uzadın{"cart":{"kind":"extend","gb":50,"months":1,"users":3,"extend_vpn_ids":["vpn_6t2k9p","vpn_1a4b7c"]}}
Konfiqurasiya edilmiş səbət əvəzinə sabit qiymətli kart alın{"cart":{"kind":"new","bundle_id":"card_100_1m","new_accounts":1}}
Cavab200 · application/json
quoteobject
Maddələr üzrə qiymət. Heç nə yaradılmır və heç nə tutulmur.
quote.model_namestring
Hansı qiymət modelinin cavab verdiyi.
quote.model_typestring
Modelin mühərrik versiyası.
quote.base_usdmoney
Endirim və əlavələrdən əvvəlki qiymət.
quote.total_usdmoney
Son qiymət — bu səbətlə satışın tutduğu məbləğ.
quote.linesarray
Maddələr üzrə bölgü, işarəli, cəmi dəqiq ümumi məbləği verir.
quote.lines[].codestring
Bu sətrin nə olduğu (base, endirim kodu, əlavə haqq…).
quote.lines[].kindstring
Sətrin kateqoriyası, interfeysinizdə qruplaşdırmaq üçün.
quote.lines[].amount_usdmoney
İşarəli. Endirimlər mənfidir; sətirlərin cəmi dəqiq total_usd dəyərini verir.
quote.lines[].pctstring
Sətrin arxasındakı faiz, varsa.
quote.cappedbool
Ümumi məbləğ modelin tavanına dəyib.
quote.floor_appliedbool
Ümumi məbləğ modelin döşəməsinə qaldırılıb.
quote.clampedenum
Səbətdəki dəyər qiymətləndirmədən əvvəl hədlərə sıxılanda təyin olunur.
Bunlardan biri:minmax
quote.invalidstring
Boş deyilsə, səbət qiymətləndirilə bilmir — bunu göstərin və belə qiymətlə HEÇ VAXT pul tutmayın.
quote.metamap
Model əlavələri, sətir→sətir (məsələn, təkmilləşdirmənin remaining_days dəyəri).
Nümunə cavab{
"quote": {
"model_name": "vpn_dynamic",
"model_type": "dynamic_v2",
"base_usd": "14.00",
"total_usd": "11.90",
"lines": [
{"code": "base", "kind": "base", "amount_usd": "14.00"},
{"code": "loyalty", "kind": "discount", "amount_usd": "-2.10", "pct": "15"}
]
}
}
VPN satışı
POST
CreateVPNOrder
buyIdempotency-Key
https://apiservice.vitamindata.net/api/v1/CreateVPNOrderYeni VPN hesabları alır, ya da mövcudları uzadır (extend_vpn_ids ilə "kind":"extend").
Cavabın ala biləcəyi iki forma üçün Ödəniş üsulları bölməsinə baxın.
Sorğu
cartobjectməcburi
Nə alınacağı — Quote qiymətləndirdiyi eyni forma.
cart.kindenumməcburi
Yeni hesablar alın, ya da mövcudlara trafik və vaxt əlavə edin.
Bunlardan biri:newextend
cart.gbintkönüllü
Hesab başına trafik, GB ilə, ListPlans hədləri daxilində.
cart.monthsintkönüllü
Hesab başına etibarlılıq, ay ilə.
cart.usersintkönüllü
Hesab başına eyni anda qoşulan cihaz sayı.
cart.new_accountsintkönüllü
Yalnız kind:"new": neçə hesab yaradılacağı. İstifadəçi adları serverdə yaradılır.
cart.extend_vpn_idsarraykönüllü
Yalnız kind:"extend": uzadılacaq hesablar, açıq id ilə.
cart.bundle_idstringkönüllü
ListPlans.bundles siyahısından konfiqurasiya edilmiş səbət əvəzinə sabit qiymətli kart alır. Təyin ediləndə gb/months/users nəzərə alınmır — kartın öz dəyərləri və qiyməti tətbiq olunur.
fundingenumməcburi
Necə ödəniləcəyi — Ödəniş üsulları bölməsinə baxın. Susmaya görə dəyər yoxdur: onu buraxmaq rədd edilir.
Bunlardan biri:FUNDING_AUTOFUNDING_BALANCEFUNDING_INVOICE
expected_total_usdmoneykönüllü
Təsdiq zəmanəti. Təyin edilibsə və bizim təzə hesablamamız fərqlidirsə, satış müştərinizin heç görmədiyi məbləği tutmaq əvəzinə price_changed ilə rədd edilir.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/CreateVPNOrder \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"cart":{"kind":"new","gb":100,"months":1,"users":3,"new_accounts":1},"funding":"FUNDING_AUTO","expected_total_usd":"11.90"}'
Bu sorğunun digər formalarıArtıq sahib olduğunuz hesabları uzadın{"cart":{"kind":"extend","gb":50,"months":1,"users":3,"extend_vpn_ids":["vpn_6t2k9p"]},"funding":"FUNDING_AUTO"}
Balansdan ödənilən sabit qiymətli kart alın{"cart":{"kind":"new","bundle_id":"card_100_1m","new_accounts":1},"funding":"FUNDING_BALANCE"}
Cavab200 · application/json
orderobject
Sifariş — statusu delivered olana qədər GetOrder çağırışını yoxlayın.
order.order_idstring
Sifarişin açıq id-si (ord_…).
order.productenum
Nə alınıb.
Bunlardan biri:vpnvps
order.kindstring
Alışın forması: new, extend, upgrade…
order.statusenum
Həyat dövrü. Məqsəd delivered-dir; needs_operator pulun daxil olduğunu və çatdırılmanı insanın tamamladığını bildirir — yenidən almayın; expired isə fakturanın ödənilmədən müddətinin bitdiyini bildirir.
Bunlardan biri:createdinvoicedpaiddeliveringdeliveredneeds_operatorfailedrefund_pendingrefundedexpired
order.fundingenum
Onu həqiqətən hansı kanalın ödədiyi. FUNDING_AUTO bunlardan birinə çevrilir.
Bunlardan biri:invoicebalance
order.total_usdmoney
Sifarişin tutduğu məbləğ.
order.invoice_idstring
Onun arxasındakı faktura — hansı kanalla ödənməsindən asılı olmayaraq hər sifarişin biri var.
order.itemsint
Sifarişin neçə səlahiyyət yaratdığı və ya uzatdığı.
order.created_atunix
Sifarişin verildiyi vaxt.
order.delivered_atunix
Çatdırılmanın bitdiyi vaxt. O ana qədər yoxdur.
order.breakdownobject
Müştərinin razılaşdığı qiymət, eynilə — Quote qaytardığı forma ilə eyni.
invoiceobject
Sifarişin arxasındakı faktura: payment_required olduqda ödəniləsi, completed olduqda artıq bağlanmış.
invoice.invoice_idstring
Şlüzün faktura id-si (inv_…).
invoice.statusenum
pending ödəniləndir. confirmed ilə delivered_redirected arasındakı hər şey pulun geri dönməz şəkildə daxil olduğunu bildirir — onların hamısını ÖDƏNİLMİŞ sayın. expired keçidin ödənilmədən müddətinin bitdiyini bildirir.
Bunlardan biri:pendingconfirmedsweepingsweptdeliveringdelivereddelivered_redirectedexpired
invoice.pay_urlstring
Hostlanan ödəniş səhifəsi. Müştərinizi bura göndərin; hər kanal (coin, zəncir, balans) onun arxasındadır.
invoice.pay_telegram_urlstring
Elə həmin faktura, Telegram daxilində ödəniləsi: o, ödəniş provayderinin öz botunu açır, bot məbləği göstərir və ödənişi orada qəbul edir. Tətbiqdən çıxmaq istəməyən müştərilər üçün onu pay_url ilə yan-yana təklif edin. Olmaya bilər — yalnız botu konfiqurasiya edilmiş ödəniş provayderində olur, ona görə onu heç vaxt yeganə ödəniş düyməniz etməyin.
invoice.price_usdmoney
Fakturanın topladığı məbləğ.
invoice.expires_atunix
Ödəniş pəncərəsinin bağlandığı vaxt.
paidbool
Pul tutulub. payment_required ilə birlikdə yoxdur (= false).
statusenum
Budaqlanacağınız ƏSAS sahə — Ödəniş üsulları bölməsinə baxın.
Bunlardan biri:completedpayment_required
Nümunə cavab{
"order": {
"order_id": "ord_8c3d1e", "product": "vpn", "kind": "new",
"status": "invoiced", "funding": "invoice", "total_usd": "11.90",
"invoice_id": "inv_9m2r4t", "items": 1, "created_at": "1785412800"
},
"invoice": {
"invoice_id": "inv_9m2r4t", "status": "pending",
"pay_url": "https://pay.example.com/i/inv_9m2r4t",
"pay_telegram_url": "https://t.me/VitaminPayBot?start=9m2r4t",
"price_usd": "11.90", "expires_at": "1785499200"
},
"status": "payment_required"
}
https://apiservice.vitamindata.net/api/v1/GetOrderAldıqdan sonra bunu yoxlayın: created → invoiced → paid → delivering → delivered.
Sorğu
order_idstringməcburi
Verdiyiniz sifarişdən.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/GetOrder \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"order_id":"ord_7b2c9d"}'
Cavab200 · application/json
orderobject
Sifariş, tam təfərrüatı ilə.
order.order_idstring
Sifarişin açıq id-si (ord_…).
order.productenum
Nə alınıb.
Bunlardan biri:vpnvps
order.kindstring
Alışın forması: new, extend, upgrade…
order.statusenum
Həyat dövrü. Məqsəd delivered-dir; needs_operator pulun daxil olduğunu və çatdırılmanı insanın tamamladığını bildirir — yenidən almayın; expired isə fakturanın ödənilmədən müddətinin bitdiyini bildirir.
Bunlardan biri:createdinvoicedpaiddeliveringdeliveredneeds_operatorfailedrefund_pendingrefundedexpired
order.fundingenum
Onu həqiqətən hansı kanalın ödədiyi. FUNDING_AUTO bunlardan birinə çevrilir.
Bunlardan biri:invoicebalance
order.total_usdmoney
Sifarişin tutduğu məbləğ.
order.invoice_idstring
Onun arxasındakı faktura — hansı kanalla ödənməsindən asılı olmayaraq hər sifarişin biri var.
order.itemsint
Sifarişin neçə səlahiyyət yaratdığı və ya uzatdığı.
order.created_atunix
Sifarişin verildiyi vaxt.
order.delivered_atunix
Çatdırılmanın bitdiyi vaxt. O ana qədər yoxdur.
order.breakdownobject
Müştərinin razılaşdığı qiymət, eynilə — Quote qaytardığı forma ilə eyni.
invoiceobject
Yalnız sifariş hələ ödəniş gözləyərkən doldurulur — hər yerdəki ilə eyni forma.
Nümunə cavab{
"order": {
"order_id": "ord_7b2c9d", "product": "vpn", "kind": "new",
"status": "delivered", "funding": "balance", "total_usd": "11.90",
"invoice_id": "inv_5k8p2q", "items": 1,
"created_at": "1785230043", "delivered_at": "1785230103",
"breakdown": {
"model_name": "vpn_dynamic",
"model_type": "dynamic_v2",
"base_usd": "14.00",
"total_usd": "11.90",
"lines": [
{"code": "base", "kind": "base", "amount_usd": "14.00"},
{"code": "loyalty", "kind": "discount", "amount_usd": "-2.10", "pct": "15"}
]
}
}
}
https://apiservice.vitamindata.net/api/v1/ListOrdersSifariş tarixçəniz, ən yenisi əvvəldə.
Sorğu
limitintkönüllü
Səhifə ölçüsü. Susmaya görə 25, maksimum 100.
cursorcursorkönüllü
Əvvəlki cavabın next_cursor dəyəri. İlk səhifə üçün onu buraxın.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/ListOrders \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"limit":25,"cursor":""}'
Cavab200 · application/json
orders[].order_idstring
Sifarişin açıq id-si (ord_…).
orders[].productenum
Nə alınıb.
Bunlardan biri:vpnvps
orders[].kindstring
Alışın forması: new, extend, upgrade…
orders[].statusenum
Həyat dövrü. Məqsəd delivered-dir; needs_operator pulun daxil olduğunu və çatdırılmanı insanın tamamladığını bildirir — yenidən almayın; expired isə fakturanın ödənilmədən müddətinin bitdiyini bildirir.
Bunlardan biri:createdinvoicedpaiddeliveringdeliveredneeds_operatorfailedrefund_pendingrefundedexpired
orders[].fundingenum
Onu həqiqətən hansı kanalın ödədiyi. FUNDING_AUTO bunlardan birinə çevrilir.
Bunlardan biri:invoicebalance
orders[].total_usdmoney
Sifarişin tutduğu məbləğ.
orders[].invoice_idstring
Onun arxasındakı faktura — hansı kanalla ödənməsindən asılı olmayaraq hər sifarişin biri var.
orders[].itemsint
Sifarişin neçə səlahiyyət yaratdığı və ya uzatdığı.
orders[].created_atunix
Sifarişin verildiyi vaxt.
orders[].delivered_atunix
Çatdırılmanın bitdiyi vaxt. O ana qədər yoxdur.
orders[].breakdownobject
Müştərinin razılaşdığı qiymət, eynilə — Quote qaytardığı forma ilə eyni.
next_cursorcursor
Növbəti səhifə üçün onu cursor kimi geri göndərin. Yoxdursa/boşdursa — hər şeyi almısınız.
Nümunə cavab{
"orders": [
{"order_id": "ord_7b2c9d", "product": "vpn", "kind": "new", "status": "delivered",
"funding": "balance", "total_usd": "11.90", "invoice_id": "inv_5k8p2q",
"items": 1, "created_at": "1785230043", "delivered_at": "1785230103"}
]
}
VPN idarəetməsi
https://apiservice.vitamindata.net/api/v1/ListVPNSahib olduğunuz bütün VPN hesabları, qalan trafik və bitmə tarixi ilə.
Sorğu
limitintkönüllü
Səhifə ölçüsü. Susmaya görə 50, maksimum 200.
cursorcursorkönüllü
Əvvəlki cavabın next_cursor dəyəri. İlk səhifə üçün onu buraxın.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/ListVPN \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"limit":25,"cursor":""}'
Cavab200 · application/json
vpns[].vpn_idstring
Bütün digər VPN feillərinin götürdüyü açıq id.
vpns[].usernamestring
Tətbiqlərdə göstərilən etimadnamə adı.
vpns[].statusstring
Hesabın panelin göstərdiyi vəziyyəti — dayandırılmayıbsa və müddəti bitməyibsə active.
vpns[].remaining_bytesbytes
Bütün paketləri üzrə qalan trafik.
vpns[].total_downloadbytes
Bütün dövr ərzində endirilən, VPN müstəvisinin canlı bildirdiyi kimi. ListVPN daxilində bu həmişə 0-dır — siyahı keşlənmiş oxu modelindən verilir və orada istiqamət üzrə göstərici yoxdur. Siyahı üçün used_bytes, bölgü üçün isə GetVPN/GetVPNUsage işlədin.
vpns[].total_uploadbytes
Bütün dövr ərzində yüklənən. total_download ilə eyni qeyd: ListVPN daxilində 0.
vpns[].used_bytesbytes
Bütün dövr ərzində həqiqətən xərclənən trafik (endirilən + yüklənən). Bu, mülkiyyət qeydinin hər VPN üçün saxladığı rəqəmdir, ona görə ListVPN daxil olmaqla hər son nöqtədə düzgündür.
vpns[].expires_atunix
Hesabın müddətinin bitdiyi vaxt.
vpns[].max_onlineint
İcazə verilən eyni anda qoşulan cihaz sayı.
vpns[].daily_limit_bytesbytes
Bugünkü limit. Yoxdursa/0 — gündəlik limit YOXDUR.
vpns[].daily_used_bytesbytes
Bugünkü limitə qarşı xərclənən.
vpns[].daily_reset_unixunix
Gündəlik sayğacın sıfırlandığı vaxt.
vpns[].allowed_protocolsint
Tətbiqlərimizin işlətdiyi protokol bit maskası. Onu qapalı sayın.
vpns[].cache_atunix
Göstəricilərin nə qədər təzə olduğu: live təyin edilməyibsə, onlar bu zaman möhürü qədər köhnədir.
vpns[].created_atunix
Hesabın yaradıldığı vaxt.
vpns[].livebool
Göstəricilər keşdən deyil, indicə şəbəkədən gəlib.
next_cursorcursor
Növbəti səhifə üçün onu cursor kimi geri göndərin. Yoxdursa/boşdursa — hər şeyi almısınız.
Nümunə cavab{
"vpns": [{
"vpn_id": "vpn_6t2k9p",
"username": "u482913",
"status": "active",
"remaining_bytes": "96636764160",
"total_download": "10737418240",
"used_bytes": "11811160064",
"total_upload": "1073741824",
"expires_at": "1793188800",
"max_online": 3,
"cache_at": "1785412700",
"created_at": "1785000000"
}],
"next_cursor": "vpn_6t2k9p"
}
https://apiservice.vitamindata.net/api/v1/GetVPNBir hesab təfərrüatı ilə. live:true göstəricilərin indicə şəbəkədən gəldiyini bildirir.
Sorğu
vpn_idstringməcburi
Hesabın açıq id-si (vpn_…), ListVPN siyahısından və ya sifarişin çatdırılmasından.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/GetVPN \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vpn_id":"vpn_6t2k9p"}'
Cavab200 · application/json
vpn.vpn_idstring
Bütün digər VPN feillərinin götürdüyü açıq id.
vpn.usernamestring
Tətbiqlərdə göstərilən etimadnamə adı.
vpn.statusstring
Hesabın panelin göstərdiyi vəziyyəti — dayandırılmayıbsa və müddəti bitməyibsə active.
vpn.remaining_bytesbytes
Bütün paketləri üzrə qalan trafik.
vpn.total_downloadbytes
Bütün dövr ərzində endirilən, VPN müstəvisinin canlı bildirdiyi kimi. ListVPN daxilində bu həmişə 0-dır — siyahı keşlənmiş oxu modelindən verilir və orada istiqamət üzrə göstərici yoxdur. Siyahı üçün used_bytes, bölgü üçün isə GetVPN/GetVPNUsage işlədin.
vpn.total_uploadbytes
Bütün dövr ərzində yüklənən. total_download ilə eyni qeyd: ListVPN daxilində 0.
vpn.used_bytesbytes
Bütün dövr ərzində həqiqətən xərclənən trafik (endirilən + yüklənən). Bu, mülkiyyət qeydinin hər VPN üçün saxladığı rəqəmdir, ona görə ListVPN daxil olmaqla hər son nöqtədə düzgündür.
vpn.expires_atunix
Hesabın müddətinin bitdiyi vaxt.
vpn.max_onlineint
İcazə verilən eyni anda qoşulan cihaz sayı.
vpn.daily_limit_bytesbytes
Bugünkü limit. Yoxdursa/0 — gündəlik limit YOXDUR.
vpn.daily_used_bytesbytes
Bugünkü limitə qarşı xərclənən.
vpn.daily_reset_unixunix
Gündəlik sayğacın sıfırlandığı vaxt.
vpn.allowed_protocolsint
Tətbiqlərimizin işlətdiyi protokol bit maskası. Onu qapalı sayın.
vpn.cache_atunix
Göstəricilərin nə qədər təzə olduğu: live təyin edilməyibsə, onlar bu zaman möhürü qədər köhnədir.
vpn.created_atunix
Hesabın yaradıldığı vaxt.
vpn.livebool
Göstəricilər keşdən deyil, indicə şəbəkədən gəlib.
livebool
İndicə şəbəkədən gəlib. Yoxdursa — oxu modelindən verilib və cache_at qədər köhnədir.
Nümunə cavab{
"vpn": {
"vpn_id": "vpn_6t2k9p",
"username": "u482913",
"status": "active",
"remaining_bytes": "96636764160",
"total_download": "10737418240",
"used_bytes": "11811160064",
"total_upload": "1073741824",
"expires_at": "1793188800",
"max_online": 3,
"cache_at": "1785412700",
"created_at": "1785000000"
},
"live": true
}
https://apiservice.vitamindata.net/api/v1/GetVPNUsageİstifadə olunmuş və qalan trafik, tətbiq olunursa bugünkü limitlə birlikdə.
Sorğu
vpn_idstringməcburi
Hesabın açıq id-si (vpn_…), ListVPN siyahısından və ya sifarişin çatdırılmasından.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/GetVPNUsage \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vpn_id":"vpn_6t2k9p"}'
Cavab200 · application/json
vpn_idstring
Geri əks olunur.
remaining_bytesbytes
Qalan trafik.
total_downloadbytes
Bütün dövr ərzində endirilən.
total_uploadbytes
Bütün dövr ərzində yüklənən.
expires_atunix
Hesabın müddətinin bitdiyi vaxt.
daily_limit_bytesbytes
Bugünkü limit. Yoxdursa — limit yoxdur.
daily_used_bytesbytes
Bugünkü limitə qarşı xərclənən.
daily_reset_unixunix
Gündəlik sayğacın sıfırlandığı vaxt.
cache_atunix
Canlı olmayanda göstəricilərin təzəliyi.
livebool
İndicə şəbəkədən təzə gəlib.
seriesarray
Tarixi istifadə seriyası üçün ehtiyatda saxlanılıb — bu gün boşdur.
series[].tunix
Vaxt aralığının başlanğıcı.
series[].rxbytes
Aralıqda endirilən.
series[].txbytes
Aralıqda yüklənən.
Nümunə cavab{
"vpn_id": "vpn_6t2k9p",
"remaining_bytes": "96636764160",
"total_download": "10737418240",
"total_upload": "1073741824",
"expires_at": "1793188800",
"daily_limit_bytes": "53687091200",
"daily_used_bytes": "1273741824",
"daily_reset_unix": "1785456000",
"cache_at": "1785412700",
"live": true
}
https://apiservice.vitamindata.net/api/v1/ListVPNBundlesBir hesabın arxasındakı trafik cüzdanları, istifadə olunacaqları sıra ilə.
"Müştərimin pulsuz trafiki qalmışkən ödənişli trafiki niyə azaldı?" sualına belə cavab verirsiniz — queue_position 1 növbəti boşalacaq olandır. live:false onları oxuya bilmədiyimizi bildirir ki, bu da heç birinin olmaması ilə eyni şey deyil.
Sorğu
vpn_idstringməcburi
Hesabın açıq id-si (vpn_…), ListVPN siyahısından və ya sifarişin çatdırılmasından.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/ListVPNBundles \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vpn_id":"vpn_6t2k9p"}'
Cavab200 · application/json
bundlesarray
Cüzdanlar, istifadə sırası ilə.
bundles[].bundle_idstring
Cüzdanın id-si.
bundles[].freebool
Alınmayıb, pulsuz səviyyə tərəfindən verilib.
bundles[].sourceenum
Cüzdanın haradan gəldiyi.
Bunlardan biri:buyextendmigratedfree_tier
bundles[].granted_bytesbytes
Verildiyi andakı tam ölçüsü.
bundles[].remaining_bytesbytes
İçində qalan.
bundles[].granted_atunix
Verildiyi vaxt.
bundles[].expires_atunix
Xərclənib-xərclənməməsindən asılı olmayaraq müddətinin bitdiyi vaxt.
bundles[].daily_limit_bytesbytes
Onun öz gündəlik limiti. Yoxdursa — limit yoxdur.
bundles[].statusenum
Rəqəmlə deyil, sözlə yazılır ki, 2-nin "tükənib" demək olduğunu öyrənmək məcburiyyətində qalmayasınız.
Bunlardan biri:activedisabledexhausted
bundles[].queue_positionint
İSTİFADƏYƏ YARARLI cüzdanlar üzrə 1-dən başlayaraq, istifadə sırası ilə — 1 növbəti boşalır. 0/yoxluq onun növbədən çıxdığını bildirir (xərclənib, müddəti bitib və ya söndürülüb).
bundles[].plan_gbint
Satıldığı ölçü, GB ilə.
bundles[].plan_daysint
Satıldığı etibarlılıq müddəti, gün ilə.
bundles[].invoice_idstring
Gəldiyi alış. Pulsuz verilişdə yoxdur.
livebool
Yoxdursa/false — səlahiyyət müstəvisi əlçatmaz idi, ona görə siyahı səhv deyil, BOŞdur. "Onları oxuya bilmədik" ilə "heç biri yoxdur" fərqli cümlələrdir.
Nümunə cavab{
"bundles": [
{"bundle_id": "bnd_2m8x", "source": "buy",
"granted_bytes": "107374182400", "remaining_bytes": "96636764160",
"granted_at": "1785000000", "expires_at": "1793188800",
"status": "active", "queue_position": 1, "plan_gb": 100, "plan_days": 30,
"invoice_id": "inv_5k8p2q"},
{"bundle_id": "bnd_9k1f", "free": true, "source": "free_tier",
"granted_bytes": "5368709120", "remaining_bytes": "5368709120",
"granted_at": "1784000000", "expires_at": "1793188800",
"status": "active", "queue_position": 2, "plan_gb": 5, "plan_days": 30}
],
"live": true
}
POST
GetSubscriptionLink
read
https://apiservice.vitamindata.net/api/v1/GetSubscriptionLinkMüştərinin tətbiqinin idxal etdiyi abunə URL-i. VPN satışının çatdırılan nəticəsi budur.
Sorğu
vpn_idstringməcburi
Hesabın açıq id-si (vpn_…), ListVPN siyahısından və ya sifarişin çatdırılmasından.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/GetSubscriptionLink \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vpn_id":"vpn_6t2k9p"}'
Cavab200 · application/json
subscription_urlstring
Bunu müştərinizin tətbiqinə verin — çatdırılan şey elə budur.
tokenstring
Öz QR kodunuzu və ya tətbiqə idxal keçidlərinizi qurmaq üçün açıq token.
Nümunə cavab{
"subscription_url": "https://sub.example.com/s/9f3kq8x2",
"token": "9f3kq8x2"
}
POST
SetVPNPassword
credentials
https://apiservice.vitamindata.net/api/v1/SetVPNPasswordHesabın şifrəsini dəyişir.
Ayrıca credentials əhatə dairəsi tələb edir — o, heç vaxt manage tərəfindən nəzərdə tutulmur.
Sorğu
vpn_idstringməcburi
Hesabın açıq id-si (vpn_…), ListVPN siyahısından və ya sifarişin çatdırılmasından.
new_passwordstringməcburi
Təyin ediləcək şifrə.
credentialstringkönüllü
Çoxlu etimadnaməsi olan hesablarda hansı etimadnamə. Boş = əsas olan.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/SetVPNPassword \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vpn_id":"vpn_6t2k9p","new_password":"s3cr3t-Enough","credential":""}'
Cavab200 · application/json
usernamestring
Dəyişikliyin tətbiq olunduğu etimadnamə.
Nümunə cavab{"username": "u482913"}
https://apiservice.vitamindata.net/api/v1/SetVPNStateHesabı dayandırır və ya bərpa edir.
Sorğu
vpn_idstringməcburi
Hesabın açıq id-si (vpn_…), ListVPN siyahısından və ya sifarişin çatdırılmasından.
stateenumməcburi
Nə ediləcəyi.
Bunlardan biri:suspendresume
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/SetVPNState \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vpn_id":"vpn_6t2k9p","state":"suspend"}'
Cavab200 · application/json
statusenum
Hesabın oturduğu vəziyyət.
Bunlardan biri:suspendedactive
Nümunə cavab{"status": "suspended"}
https://apiservice.vitamindata.net/api/v1/DeleteVPNHesabı silir. Geri qaytarma yoxdur, geri ödəmə də yoxdur.
Sorğu
vpn_idstringməcburi
Hesabın açıq id-si (vpn_…), ListVPN siyahısından və ya sifarişin çatdırılmasından.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/DeleteVPN \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vpn_id":"vpn_6t2k9p"}'
Cavab200 · application/json
statusenum
Uğurlu halda həmişə deleted.
Bunlardan biri:deleted
Nümunə cavab{"status": "deleted"}
Server satışı
VPS satışı VPN satışı ilə eyni ödəniş müqaviləsidir — yalnız səbət fərqlənir.
https://apiservice.vitamindata.net/api/v1/GetVPSStorefrontMəkanlar, hər birində qiymətləndirilmiş planlar və yüklənə bilən imiclər.
available:false olan node tutumunu doldurub — onu göstərin, amma təklif etməyin.
Sorğu
Parametr yoxdur — boş obyekt göndərin, {}.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/GetVPSStorefront \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{}'
Cavab200 · application/json
nodesarray
Məkanlar, hər biri öz qiymətləndirilmiş planları ilə.
nodes[].node_idstring
Səbətin node_id sahəsinin götürdüyü dəyər.
nodes[].labelstring
Göstərilən ad (Frankfurt).
nodes[].regionstring
Qruplaşdırma üçün kobud region kodu.
nodes[].countrystring
ISO ölkə kodu, bayraqlar üçün.
nodes[].availablebool
Yoxluq/false = tutum bitib: onu göstərin, amma təklif etməyin.
nodes[].plansarray
Burada nə satıla bilər, qiymətləri ilə.
nodes[].plans[].plan_codestring
Səbətin plan_code sahəsinin götürdüyü dəyər.
nodes[].plans[].namestring
Göstərilən ad.
nodes[].plans[].vcpuint
Nüvələr.
nodes[].plans[].ram_mbint
Yaddaş, MB ilə.
nodes[].plans[].disk_gbint
Disk, GB ilə.
nodes[].plans[].traffic_bytesbytes
Daxil olan aylıq trafik.
nodes[].plans[].price_usd_monthmoney
BU NODE-DAKI aylıq qiymət — eyni plan başqa yerdə fərqli qiymətə ola bilər.
imagesarray
Yüklənə və ya quraşdırıla bilən hər şey.
images[].shastring
İmicin YEGANƏ identifikatoru — səbətlər, yenidən quraşdırmalar və ISO qoşulmaları hamısı onu götürür.
images[].namestring
İnsan üçün ad (Debian 13).
images[].kindenum
disk imici birbaşa hazırlanır; iso isə yükləyib quraşdıracağınız quraşdırıcıdır.
Bunlardan biri:diskiso
images[].os_familyenum
İnterfeysinizdə qruplaşdırma və ikonlar üçün.
Bunlardan biri:linuxwindowsmikrotik
images[].min_disk_gbint
Daha kiçik diskə yenidən quraşdırma rədd edilir — əvvəlcə diski böyüdün.
months_minint
Yeni VM-in alına biləcəyi ən qısa müddət.
Nümunə cavab{
"nodes": [
{"node_id": "de1", "label": "Frankfurt", "region": "eu", "country": "DE", "available": true,
"plans": [
{"plan_code": "s2", "name": "S2", "vcpu": 2, "ram_mb": 4096, "disk_gb": 40,
"traffic_bytes": "2199023255552", "price_usd_month": "8.00"}
]}
],
"images": [
{"sha": "9a1b8c2d7e6f", "name": "Debian 13", "kind": "disk", "os_family": "linux", "min_disk_gb": 10}
],
"months_min": 1,
"months_max": 12
}
https://apiservice.vitamindata.net/api/v1/ListVPSImagesYükləyə və ya quraşdıra biləcəyiniz bütün imiclər, sha üzrə.
Sha həm səbətin, həm yenidən quraşdırmanın, həm də ISO qoşulmasının götürdüyü dəyərdir. İmici başqa heç nə identifikasiya etmir.
Sorğu
Parametr yoxdur — boş obyekt göndərin, {}.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/ListVPSImages \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{}'
Cavab200 · application/json
images[].shastring
İmicin YEGANƏ identifikatoru — səbətlər, yenidən quraşdırmalar və ISO qoşulmaları hamısı onu götürür.
images[].namestring
İnsan üçün ad (Debian 13).
images[].kindenum
disk imici birbaşa hazırlanır; iso isə yükləyib quraşdıracağınız quraşdırıcıdır.
Bunlardan biri:diskiso
images[].os_familyenum
İnterfeysinizdə qruplaşdırma və ikonlar üçün.
Bunlardan biri:linuxwindowsmikrotik
images[].min_disk_gbint
Daha kiçik diskə yenidən quraşdırma rədd edilir — əvvəlcə diski böyüdün.
Nümunə cavab{
"images": [
{"sha": "9a1b8c2d7e6f", "name": "Debian 13", "kind": "disk", "os_family": "linux", "min_disk_gb": 10},
{"sha": "3f4e5d6c7b8a", "name": "Windows Server 2025 installer", "kind": "iso",
"os_family": "windows", "min_disk_gb": 40}
]
}
https://apiservice.vitamindata.net/api/v1/QuoteVPSYeni serverin qiyməti, maddələr üzrə.
Sorğu
cartobjectməcburi
Qiymətləndiriləcək server.
cart.node_idstringməcburi
VM-in harada yaradılacağı, vitrinin node-larından.
cart.placementstringehtiyatda saxlanılıb — göndərməyin
Ehtiyatda saxlanılıb. Bu API-də serverin harada yaradılacağına həmişə node_id qərar verir — onu göndərin və node-u vitrindən özünüz seçin.
Bunlardan biri:auto
cart.plan_codestringməcburi
Plan, seçilmiş node-un öz qiymət siyahısından — planlar və qiymətlər node-dan node-a fərqlənir.
cart.image_shastringməcburi
Nəyin yüklənəcəyi və ya quraşdırılacağı, sha üzrə. Disk imicləri birbaşa hazırlanır; quraşdırıcı ISO isə VM ondan yüklənəcək şəkildə qoşulmuş gəlir.
cart.namestringməcburi
VM-in host adı / etiketi.
cart.monthsintməcburi
İlkin müddət, vitrinin ay hədləri daxilində.
cart.extra_disk_gbintkönüllü
Planınkindən əlavə disk, GB ilə.
cart.extra_ipsintkönüllü
Əlavə açıq IPv4 ünvanları.
cart.extra_traffic_tbmoneykönüllü
Aylıq əlavə trafik, TB ilə, onluq sətir kimi ("0.5").
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/QuoteVPS \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"cart":{"node_id":"de1","plan_code":"s2","image_sha":"9a1b8c2d7e6f","months":2,"name":"web-1","extra_disk_gb":20,"extra_ips":1,"extra_traffic_tb":"0.5"}}'
Cavab200 · application/json
quoteobject
Maddələr üzrə qiymət. Heç nə yaradılmır və heç nə tutulmur.
quote.model_namestring
Hansı qiymət modelinin cavab verdiyi.
quote.model_typestring
Modelin mühərrik versiyası.
quote.base_usdmoney
Endirim və əlavələrdən əvvəlki qiymət.
quote.total_usdmoney
Son qiymət — bu səbətlə satışın tutduğu məbləğ.
quote.linesarray
Maddələr üzrə bölgü, işarəli, cəmi dəqiq ümumi məbləği verir.
quote.lines[].codestring
Bu sətrin nə olduğu (base, endirim kodu, əlavə haqq…).
quote.lines[].kindstring
Sətrin kateqoriyası, interfeysinizdə qruplaşdırmaq üçün.
quote.lines[].amount_usdmoney
İşarəli. Endirimlər mənfidir; sətirlərin cəmi dəqiq total_usd dəyərini verir.
quote.lines[].pctstring
Sətrin arxasındakı faiz, varsa.
quote.cappedbool
Ümumi məbləğ modelin tavanına dəyib.
quote.floor_appliedbool
Ümumi məbləğ modelin döşəməsinə qaldırılıb.
quote.clampedenum
Səbətdəki dəyər qiymətləndirmədən əvvəl hədlərə sıxılanda təyin olunur.
Bunlardan biri:minmax
quote.invalidstring
Boş deyilsə, səbət qiymətləndirilə bilmir — bunu göstərin və belə qiymətlə HEÇ VAXT pul tutmayın.
quote.metamap
Model əlavələri, sətir→sətir (məsələn, təkmilləşdirmənin remaining_days dəyəri).
Nümunə cavab{
"quote": {
"model_name": "vps_plan",
"model_type": "vps_plan_v1",
"base_usd": "16.00",
"total_usd": "16.00",
"lines": [
{"code": "plan_s2", "kind": "base", "amount_usd": "16.00"}
],
"meta": {"months": "2"}
}
}
POST
CreateVPSOrder
buyIdempotency-Key
https://apiservice.vitamindata.net/api/v1/CreateVPSOrderServeri alır və hazırlayır.
Çatdırılma üçün GetOrder, maşının özü üçün isə GetVPS çağırışını yoxlayın.
Sorğu
cartobjectməcburi
Nəyin yaradılacağı — QuoteVPS qiymətləndirdiyi eyni forma.
cart.node_idstringməcburi
VM-in harada yaradılacağı, vitrinin node-larından.
cart.placementstringehtiyatda saxlanılıb — göndərməyin
Ehtiyatda saxlanılıb. Bu API-də serverin harada yaradılacağına həmişə node_id qərar verir — onu göndərin və node-u vitrindən özünüz seçin.
Bunlardan biri:auto
cart.plan_codestringməcburi
Plan, seçilmiş node-un öz qiymət siyahısından — planlar və qiymətlər node-dan node-a fərqlənir.
cart.image_shastringməcburi
Nəyin yüklənəcəyi və ya quraşdırılacağı, sha üzrə. Disk imicləri birbaşa hazırlanır; quraşdırıcı ISO isə VM ondan yüklənəcək şəkildə qoşulmuş gəlir.
cart.namestringməcburi
VM-in host adı / etiketi.
cart.monthsintməcburi
İlkin müddət, vitrinin ay hədləri daxilində.
cart.extra_disk_gbintkönüllü
Planınkindən əlavə disk, GB ilə.
cart.extra_ipsintkönüllü
Əlavə açıq IPv4 ünvanları.
cart.extra_traffic_tbmoneykönüllü
Aylıq əlavə trafik, TB ilə, onluq sətir kimi ("0.5").
fundingenumməcburi
Necə ödəniləcəyi — Ödəniş üsulları bölməsinə baxın. Susmaya görə dəyər yoxdur: onu buraxmaq rədd edilir.
Bunlardan biri:FUNDING_AUTOFUNDING_BALANCEFUNDING_INVOICE
expected_total_usdmoneykönüllü
Təsdiq zəmanəti. Təyin edilibsə və bizim təzə hesablamamız fərqlidirsə, satış müştərinizin heç görmədiyi məbləği tutmaq əvəzinə price_changed ilə rədd edilir.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/CreateVPSOrder \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"cart":{"node_id":"de1","plan_code":"s2","image_sha":"9a1b8c2d7e6f","months":2,"name":"web-1","extra_disk_gb":20,"extra_ips":1,"extra_traffic_tb":"0.5"},"funding":"FUNDING_AUTO","expected_total_usd":"36.00"}'
Cavab200 · application/json
orderobject
Sifariş — statusu delivered olana qədər GetOrder çağırışını yoxlayın.
order.order_idstring
Sifarişin açıq id-si (ord_…).
order.productenum
Nə alınıb.
Bunlardan biri:vpnvps
order.kindstring
Alışın forması: new, extend, upgrade…
order.statusenum
Həyat dövrü. Məqsəd delivered-dir; needs_operator pulun daxil olduğunu və çatdırılmanı insanın tamamladığını bildirir — yenidən almayın; expired isə fakturanın ödənilmədən müddətinin bitdiyini bildirir.
Bunlardan biri:createdinvoicedpaiddeliveringdeliveredneeds_operatorfailedrefund_pendingrefundedexpired
order.fundingenum
Onu həqiqətən hansı kanalın ödədiyi. FUNDING_AUTO bunlardan birinə çevrilir.
Bunlardan biri:invoicebalance
order.total_usdmoney
Sifarişin tutduğu məbləğ.
order.invoice_idstring
Onun arxasındakı faktura — hansı kanalla ödənməsindən asılı olmayaraq hər sifarişin biri var.
order.itemsint
Sifarişin neçə səlahiyyət yaratdığı və ya uzatdığı.
order.created_atunix
Sifarişin verildiyi vaxt.
order.delivered_atunix
Çatdırılmanın bitdiyi vaxt. O ana qədər yoxdur.
order.breakdownobject
Müştərinin razılaşdığı qiymət, eynilə — Quote qaytardığı forma ilə eyni.
invoiceobject
Sifarişin arxasındakı faktura: payment_required olduqda ödəniləsi, completed olduqda artıq bağlanmış.
invoice.invoice_idstring
Şlüzün faktura id-si (inv_…).
invoice.statusenum
pending ödəniləndir. confirmed ilə delivered_redirected arasındakı hər şey pulun geri dönməz şəkildə daxil olduğunu bildirir — onların hamısını ÖDƏNİLMİŞ sayın. expired keçidin ödənilmədən müddətinin bitdiyini bildirir.
Bunlardan biri:pendingconfirmedsweepingsweptdeliveringdelivereddelivered_redirectedexpired
invoice.pay_urlstring
Hostlanan ödəniş səhifəsi. Müştərinizi bura göndərin; hər kanal (coin, zəncir, balans) onun arxasındadır.
invoice.pay_telegram_urlstring
Elə həmin faktura, Telegram daxilində ödəniləsi: o, ödəniş provayderinin öz botunu açır, bot məbləği göstərir və ödənişi orada qəbul edir. Tətbiqdən çıxmaq istəməyən müştərilər üçün onu pay_url ilə yan-yana təklif edin. Olmaya bilər — yalnız botu konfiqurasiya edilmiş ödəniş provayderində olur, ona görə onu heç vaxt yeganə ödəniş düyməniz etməyin.
invoice.price_usdmoney
Fakturanın topladığı məbləğ.
invoice.expires_atunix
Ödəniş pəncərəsinin bağlandığı vaxt.
paidbool
Pul tutulub. payment_required ilə birlikdə yoxdur (= false).
statusenum
Budaqlanacağınız ƏSAS sahə — Ödəniş üsulları bölməsinə baxın.
Bunlardan biri:completedpayment_required
Nümunə cavab{
"order": {
"order_id": "ord_2f8k3j", "product": "vps", "kind": "new",
"status": "invoiced", "funding": "invoice", "total_usd": "16.00",
"invoice_id": "inv_7h4w9s", "items": 1, "created_at": "1785412800"
},
"invoice": {
"invoice_id": "inv_7h4w9s", "status": "pending",
"pay_url": "https://pay.example.com/i/inv_7h4w9s",
"price_usd": "16.00", "expires_at": "1785499200"
},
"status": "payment_required"
}
https://apiservice.vitamindata.net/api/v1/QuoteVPSExtendServerin yenilənməsinin nəyə başa gəldiyi.
Sorğu
vps_idstringməcburi
Serverin id-si, ListVPS siyahısından.
monthsintməcburi
Neçə ay əlavə ediləcəyi. Vitrinin months_min…months_max dəyərləri interfeysinizin təklif etməli olduqlarıdır, amma yeniləmə onlara SIXILMIR — ağlabatan bir rəqəm göndərin, çünki nə göndərsəniz, qiymətləndirilib tutulan da odur.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/QuoteVPSExtend \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vps_id":"vm_7q3k1n","months":1}'
Cavab200 · application/json
quoteobject
Maddələr üzrə qiymət. Heç nə yaradılmır və heç nə tutulmur.
quote.model_namestring
Hansı qiymət modelinin cavab verdiyi.
quote.model_typestring
Modelin mühərrik versiyası.
quote.base_usdmoney
Endirim və əlavələrdən əvvəlki qiymət.
quote.total_usdmoney
Son qiymət — bu səbətlə satışın tutduğu məbləğ.
quote.linesarray
Maddələr üzrə bölgü, işarəli, cəmi dəqiq ümumi məbləği verir.
quote.lines[].codestring
Bu sətrin nə olduğu (base, endirim kodu, əlavə haqq…).
quote.lines[].kindstring
Sətrin kateqoriyası, interfeysinizdə qruplaşdırmaq üçün.
quote.lines[].amount_usdmoney
İşarəli. Endirimlər mənfidir; sətirlərin cəmi dəqiq total_usd dəyərini verir.
quote.lines[].pctstring
Sətrin arxasındakı faiz, varsa.
quote.cappedbool
Ümumi məbləğ modelin tavanına dəyib.
quote.floor_appliedbool
Ümumi məbləğ modelin döşəməsinə qaldırılıb.
quote.clampedenum
Səbətdəki dəyər qiymətləndirmədən əvvəl hədlərə sıxılanda təyin olunur.
Bunlardan biri:minmax
quote.invalidstring
Boş deyilsə, səbət qiymətləndirilə bilmir — bunu göstərin və belə qiymətlə HEÇ VAXT pul tutmayın.
quote.metamap
Model əlavələri, sətir→sətir (məsələn, təkmilləşdirmənin remaining_days dəyəri).
Nümunə cavab{
"quote": {
"model_name": "vps_plan",
"model_type": "vps_plan_v1",
"base_usd": "16.00",
"total_usd": "16.00",
"lines": [
{"code": "plan_s2", "kind": "base", "amount_usd": "16.00"}
],
"meta": {"months": "2"}
}
}
POST
ExtendVPS
buyIdempotency-Key
https://apiservice.vitamindata.net/api/v1/ExtendVPSServeri yeniləyir.
Erkən yeniləmək əlavə xərcə düşmür: yeni bitmə tarixi bu gündən deyil, cari bitmə tarixindən ölçülür.
Sorğu
vps_idstringməcburi
Serverin id-si, ListVPS siyahısından.
monthsintməcburi
Neçə ay əlavə ediləcəyi. Vitrinin months_min…months_max dəyərləri interfeysinizin təklif etməli olduqlarıdır, amma yeniləmə onlara SIXILMIR — ağlabatan bir rəqəm göndərin, çünki nə göndərsəniz, qiymətləndirilib tutulan da odur.
fundingenumməcburi
Necə ödəniləcəyi — Ödəniş üsulları bölməsinə baxın. Susmaya görə dəyər yoxdur: onu buraxmaq rədd edilir.
Bunlardan biri:FUNDING_AUTOFUNDING_BALANCEFUNDING_INVOICE
expected_total_usdmoneykönüllü
Təsdiq zəmanəti. Təyin edilibsə və bizim təzə hesablamamız fərqlidirsə, satış müştərinizin heç görmədiyi məbləği tutmaq əvəzinə price_changed ilə rədd edilir.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/ExtendVPS \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"vps_id":"vm_7q3k1n","months":1,"funding":"FUNDING_AUTO","expected_total_usd":"8.00"}'
Cavab200 · application/json
orderobject
Sifariş — statusu delivered olana qədər GetOrder çağırışını yoxlayın.
order.order_idstring
Sifarişin açıq id-si (ord_…).
order.productenum
Nə alınıb.
Bunlardan biri:vpnvps
order.kindstring
Alışın forması: new, extend, upgrade…
order.statusenum
Həyat dövrü. Məqsəd delivered-dir; needs_operator pulun daxil olduğunu və çatdırılmanı insanın tamamladığını bildirir — yenidən almayın; expired isə fakturanın ödənilmədən müddətinin bitdiyini bildirir.
Bunlardan biri:createdinvoicedpaiddeliveringdeliveredneeds_operatorfailedrefund_pendingrefundedexpired
order.fundingenum
Onu həqiqətən hansı kanalın ödədiyi. FUNDING_AUTO bunlardan birinə çevrilir.
Bunlardan biri:invoicebalance
order.total_usdmoney
Sifarişin tutduğu məbləğ.
order.invoice_idstring
Onun arxasındakı faktura — hansı kanalla ödənməsindən asılı olmayaraq hər sifarişin biri var.
order.itemsint
Sifarişin neçə səlahiyyət yaratdığı və ya uzatdığı.
order.created_atunix
Sifarişin verildiyi vaxt.
order.delivered_atunix
Çatdırılmanın bitdiyi vaxt. O ana qədər yoxdur.
order.breakdownobject
Müştərinin razılaşdığı qiymət, eynilə — Quote qaytardığı forma ilə eyni.
invoiceobject
Sifarişin arxasındakı faktura: payment_required olduqda ödəniləsi, completed olduqda artıq bağlanmış.
invoice.invoice_idstring
Şlüzün faktura id-si (inv_…).
invoice.statusenum
pending ödəniləndir. confirmed ilə delivered_redirected arasındakı hər şey pulun geri dönməz şəkildə daxil olduğunu bildirir — onların hamısını ÖDƏNİLMİŞ sayın. expired keçidin ödənilmədən müddətinin bitdiyini bildirir.
Bunlardan biri:pendingconfirmedsweepingsweptdeliveringdelivereddelivered_redirectedexpired
invoice.pay_urlstring
Hostlanan ödəniş səhifəsi. Müştərinizi bura göndərin; hər kanal (coin, zəncir, balans) onun arxasındadır.
invoice.pay_telegram_urlstring
Elə həmin faktura, Telegram daxilində ödəniləsi: o, ödəniş provayderinin öz botunu açır, bot məbləği göstərir və ödənişi orada qəbul edir. Tətbiqdən çıxmaq istəməyən müştərilər üçün onu pay_url ilə yan-yana təklif edin. Olmaya bilər — yalnız botu konfiqurasiya edilmiş ödəniş provayderində olur, ona görə onu heç vaxt yeganə ödəniş düyməniz etməyin.
invoice.price_usdmoney
Fakturanın topladığı məbləğ.
invoice.expires_atunix
Ödəniş pəncərəsinin bağlandığı vaxt.
paidbool
Pul tutulub. payment_required ilə birlikdə yoxdur (= false).
statusenum
Budaqlanacağınız ƏSAS sahə — Ödəniş üsulları bölməsinə baxın.
Bunlardan biri:completedpayment_required
Nümunə cavab{
"order": {
"order_id": "ord_5d1p8m", "product": "vps", "kind": "extend",
"status": "paid", "funding": "balance", "total_usd": "8.00",
"invoice_id": "inv_1c6v3z", "items": 1, "created_at": "1785412800"
},
"invoice": {
"invoice_id": "inv_1c6v3z", "status": "confirmed", "price_usd": "8.00"
},
"paid": true,
"status": "completed"
}
https://apiservice.vitamindata.net/api/v1/QuoteVPSUpgradeDaha böyük konfiqurasiyanın qiyməti, artıq ödənilmiş vaxta mütənasib bölünmüş halda.
Sorğu
vps_idstringməcburi
Serverin id-si, ListVPS siyahısından.
specobjectməcburi
HƏDƏF konfiqurasiya. Buraxılmış və ya sıfır sahələr cari dəyərini saxlayır.
spec.vcpuintkönüllü
Hədəf nüvə sayı. 0 cari dəyəri saxlayır.
spec.ram_mbintkönüllü
Hədəf yaddaş, MB ilə. 0 cari dəyəri saxlayır.
spec.disk_gbintkönüllü
Hədəf disk, GB ilə. Disk yalnız böyüyür — kiçik dəyər rədd edilir, çünki əməliyyat sisteminin altındakı fayl sistemini kiçiltmək məlumat itkisidir.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/QuoteVPSUpgrade \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vps_id":"vm_7q3k1n","spec":{"vcpu":4,"ram_mb":8192,"disk_gb":80}}'
Cavab200 · application/json
quoteobject
Maddələr üzrə qiymət. Heç nə yaradılmır və heç nə tutulmur.
quote.model_namestring
Hansı qiymət modelinin cavab verdiyi.
quote.model_typestring
Modelin mühərrik versiyası.
quote.base_usdmoney
Endirim və əlavələrdən əvvəlki qiymət.
quote.total_usdmoney
Son qiymət — bu səbətlə satışın tutduğu məbləğ.
quote.linesarray
Maddələr üzrə bölgü, işarəli, cəmi dəqiq ümumi məbləği verir.
quote.lines[].codestring
Bu sətrin nə olduğu (base, endirim kodu, əlavə haqq…).
quote.lines[].kindstring
Sətrin kateqoriyası, interfeysinizdə qruplaşdırmaq üçün.
quote.lines[].amount_usdmoney
İşarəli. Endirimlər mənfidir; sətirlərin cəmi dəqiq total_usd dəyərini verir.
quote.lines[].pctstring
Sətrin arxasındakı faiz, varsa.
quote.cappedbool
Ümumi məbləğ modelin tavanına dəyib.
quote.floor_appliedbool
Ümumi məbləğ modelin döşəməsinə qaldırılıb.
quote.clampedenum
Səbətdəki dəyər qiymətləndirmədən əvvəl hədlərə sıxılanda təyin olunur.
Bunlardan biri:minmax
quote.invalidstring
Boş deyilsə, səbət qiymətləndirilə bilmir — bunu göstərin və belə qiymətlə HEÇ VAXT pul tutmayın.
quote.metamap
Model əlavələri, sətir→sətir (məsələn, təkmilləşdirmənin remaining_days dəyəri).
restart_requiredbool
Bu konfiqurasiyanın tətbiqi enerji dövrü tələb edir — müştəri bunu ÖDƏMƏZDƏN ƏVVƏL bilməlidir.
monthly_before_usdmoney
Bugünkü təkrarlanan qiymət.
monthly_after_usdmoney
Təkmilləşdirmədən sonrakı təkrarlanan qiymət — bundan sonra yeniləmələrin nəyə başa gələcəyi.
Nümunə cavab{
"quote": {
"model_name": "vps_upgrade",
"model_type": "vps_plan_v1",
"base_usd": "4.20",
"total_usd": "4.20",
"lines": [
{"code": "prorate_vcpu", "kind": "vps_upgrade", "amount_usd": "2.40"},
{"code": "prorate_ram", "kind": "vps_upgrade", "amount_usd": "1.80"}
],
"meta": {"remaining_days": "21", "monthly_delta_usd": "6.00", "quote_expires_at": "1785416400"}
},
"restart_required": true,
"monthly_before_usd": "8.00",
"monthly_after_usd": "14.00"
}
POST
UpgradeVPS
buyIdempotency-Key
https://apiservice.vitamindata.net/api/v1/UpgradeVPSDaha böyük konfiqurasiyanı ödəyir və tətbiq edir. Disk yalnız böyüyə bilər.
Sorğu
vps_idstringməcburi
Serverin id-si, ListVPS siyahısından.
specobjectməcburi
HƏDƏF konfiqurasiya — əvvəlcə qiymətini alın; qiymət hesablaması sizə yenidən başlatma barədə də deyir.
spec.vcpuintkönüllü
Hədəf nüvə sayı. 0 cari dəyəri saxlayır.
spec.ram_mbintkönüllü
Hədəf yaddaş, MB ilə. 0 cari dəyəri saxlayır.
spec.disk_gbintkönüllü
Hədəf disk, GB ilə. Disk yalnız böyüyür — kiçik dəyər rədd edilir, çünki əməliyyat sisteminin altındakı fayl sistemini kiçiltmək məlumat itkisidir.
fundingenumməcburi
Necə ödəniləcəyi — Ödəniş üsulları bölməsinə baxın. Susmaya görə dəyər yoxdur: onu buraxmaq rədd edilir.
Bunlardan biri:FUNDING_AUTOFUNDING_BALANCEFUNDING_INVOICE
expected_total_usdmoneykönüllü
Təsdiq zəmanəti. Təyin edilibsə və bizim təzə hesablamamız fərqlidirsə, satış müştərinizin heç görmədiyi məbləği tutmaq əvəzinə price_changed ilə rədd edilir.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/UpgradeVPS \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"vps_id":"vm_7q3k1n","spec":{"vcpu":4,"ram_mb":8192,"disk_gb":80},"funding":"FUNDING_AUTO","expected_total_usd":"4.20"}'
Cavab200 · application/json
orderobject
Sifariş — statusu delivered olana qədər GetOrder çağırışını yoxlayın.
order.order_idstring
Sifarişin açıq id-si (ord_…).
order.productenum
Nə alınıb.
Bunlardan biri:vpnvps
order.kindstring
Alışın forması: new, extend, upgrade…
order.statusenum
Həyat dövrü. Məqsəd delivered-dir; needs_operator pulun daxil olduğunu və çatdırılmanı insanın tamamladığını bildirir — yenidən almayın; expired isə fakturanın ödənilmədən müddətinin bitdiyini bildirir.
Bunlardan biri:createdinvoicedpaiddeliveringdeliveredneeds_operatorfailedrefund_pendingrefundedexpired
order.fundingenum
Onu həqiqətən hansı kanalın ödədiyi. FUNDING_AUTO bunlardan birinə çevrilir.
Bunlardan biri:invoicebalance
order.total_usdmoney
Sifarişin tutduğu məbləğ.
order.invoice_idstring
Onun arxasındakı faktura — hansı kanalla ödənməsindən asılı olmayaraq hər sifarişin biri var.
order.itemsint
Sifarişin neçə səlahiyyət yaratdığı və ya uzatdığı.
order.created_atunix
Sifarişin verildiyi vaxt.
order.delivered_atunix
Çatdırılmanın bitdiyi vaxt. O ana qədər yoxdur.
order.breakdownobject
Müştərinin razılaşdığı qiymət, eynilə — Quote qaytardığı forma ilə eyni.
invoiceobject
Sifarişin arxasındakı faktura: payment_required olduqda ödəniləsi, completed olduqda artıq bağlanmış.
invoice.invoice_idstring
Şlüzün faktura id-si (inv_…).
invoice.statusenum
pending ödəniləndir. confirmed ilə delivered_redirected arasındakı hər şey pulun geri dönməz şəkildə daxil olduğunu bildirir — onların hamısını ÖDƏNİLMİŞ sayın. expired keçidin ödənilmədən müddətinin bitdiyini bildirir.
Bunlardan biri:pendingconfirmedsweepingsweptdeliveringdelivereddelivered_redirectedexpired
invoice.pay_urlstring
Hostlanan ödəniş səhifəsi. Müştərinizi bura göndərin; hər kanal (coin, zəncir, balans) onun arxasındadır.
invoice.pay_telegram_urlstring
Elə həmin faktura, Telegram daxilində ödəniləsi: o, ödəniş provayderinin öz botunu açır, bot məbləği göstərir və ödənişi orada qəbul edir. Tətbiqdən çıxmaq istəməyən müştərilər üçün onu pay_url ilə yan-yana təklif edin. Olmaya bilər — yalnız botu konfiqurasiya edilmiş ödəniş provayderində olur, ona görə onu heç vaxt yeganə ödəniş düyməniz etməyin.
invoice.price_usdmoney
Fakturanın topladığı məbləğ.
invoice.expires_atunix
Ödəniş pəncərəsinin bağlandığı vaxt.
paidbool
Pul tutulub. payment_required ilə birlikdə yoxdur (= false).
statusenum
Budaqlanacağınız ƏSAS sahə — Ödəniş üsulları bölməsinə baxın.
Bunlardan biri:completedpayment_required
Nümunə cavab{
"order": {
"order_id": "ord_5d1p8m", "product": "vps", "kind": "extend",
"status": "paid", "funding": "balance", "total_usd": "8.00",
"invoice_id": "inv_1c6v3z", "items": 1, "created_at": "1785412800"
},
"invoice": {
"invoice_id": "inv_1c6v3z", "status": "confirmed", "price_usd": "8.00"
},
"paid": true,
"status": "completed"
}
Server idarəetməsi
Buradakı hər feil serveri id ilə götürür — bu çağırışlarda sahə hərfi mənada id adlanır, pul feillərindəki vps_id ilə fərqli olaraq.
https://apiservice.vitamindata.net/api/v1/ListVPSMaşınlarınız, enerji vəziyyəti və ünvanları ilə.
Sorğu
limitintkönüllü
Səhifə ölçüsü. Susmaya görə 50.
cursorcursorkönüllü
Əvvəlki cavabın next_cursor dəyəri. İlk səhifə üçün onu buraxın.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/ListVPS \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"limit":50,"cursor":""}'
Cavab200 · application/json
vps[].idstring
Serverin id-si — hər idarəetmə feilinin id sahəsinin və hər pul feilinin vps_id sahəsinin götürdüyü dəyər.
vps[].namestring
Onun host adı / etiketi.
vps[].node_idstring
Harada işlədiyi.
vps[].lifecycleenum
0 hazırlanır · 1 aktiv · 2 dayandırılıb · 3 silinir · 4 silinib.
Bunlardan biri:01234
vps[].provisionedbool
Maşın öz hostunda mövcuddur.
vps[].power_desiredenum
Enerjinin NECƏ OLMALI olduğu: 1 açıq, 0/yoxluq bağlı. Canlı vəziyyət GetVPSStats.running sahəsindədir.
Bunlardan biri:01
vps[].mem_mbint
Yaddaş, MB ilə.
vps[].disk_gbint
Disk, GB ilə.
vps[].image_shastring
Nədən yükləndiyi və ya quraşdırıldığı.
vps[].expires_atunix
Serverin müddətinin bitdiyi vaxt — ondan əvvəl ExtendVPS ilə yeniləyin.
vps[].created_atunix
Yaradıldığı vaxt.
vps[].ipsarray
Onun açıq ünvanları.
vps[].private_ipstring
Plan onu nəzərdə tuturdursa, onun daxili ünvanı.
next_cursorcursor
Növbəti səhifə üçün onu cursor kimi geri göndərin. Yoxdursa/boşdursa — hər şeyi almısınız.
Nümunə cavab{
"vps": [{
"id": "vm_7q3k1n",
"name": "web-1",
"node_id": "de1",
"lifecycle": 1,
"provisioned": true,
"power_desired": 1,
"vcpu": 2,
"mem_mb": 4096,
"disk_gb": 40,
"image_sha": "9a1b8c2d7e6f",
"expires_at": "1793188800",
"created_at": "1785000000",
"ips": ["203.0.113.10"],
"private_ip": "10.77.0.10"
}]
}
https://apiservice.vitamindata.net/api/v1/GetVPSBir maşın təfərrüatı ilə.
Sorğu
idstringməcburi
Serverin id-si, ListVPS siyahısından. Nəzərə alın ki, idarəetmə feillərində sahə id adlanır — yalnız pul feilləri onu vps_id yazır.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/GetVPS \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n"}'
Cavab200 · application/json
vps.idstring
Serverin id-si — hər idarəetmə feilinin id sahəsinin və hər pul feilinin vps_id sahəsinin götürdüyü dəyər.
vps.namestring
Onun host adı / etiketi.
vps.node_idstring
Harada işlədiyi.
vps.lifecycleenum
0 hazırlanır · 1 aktiv · 2 dayandırılıb · 3 silinir · 4 silinib.
Bunlardan biri:01234
vps.provisionedbool
Maşın öz hostunda mövcuddur.
vps.power_desiredenum
Enerjinin NECƏ OLMALI olduğu: 1 açıq, 0/yoxluq bağlı. Canlı vəziyyət GetVPSStats.running sahəsindədir.
Bunlardan biri:01
vps.mem_mbint
Yaddaş, MB ilə.
vps.disk_gbint
Disk, GB ilə.
vps.image_shastring
Nədən yükləndiyi və ya quraşdırıldığı.
vps.expires_atunix
Serverin müddətinin bitdiyi vaxt — ondan əvvəl ExtendVPS ilə yeniləyin.
vps.created_atunix
Yaradıldığı vaxt.
vps.ipsarray
Onun açıq ünvanları.
vps.private_ipstring
Plan onu nəzərdə tuturdursa, onun daxili ünvanı.
livebool
İndicə müstəvidən oxunub.
Nümunə cavab{
"vps": {
"id": "vm_7q3k1n",
"name": "web-1",
"node_id": "de1",
"lifecycle": 1,
"provisioned": true,
"power_desired": 1,
"vcpu": 2,
"mem_mb": 4096,
"disk_gb": 40,
"image_sha": "9a1b8c2d7e6f",
"expires_at": "1793188800",
"created_at": "1785000000",
"ips": ["203.0.113.10"],
"private_ip": "10.77.0.10"
},
"live": true
}
https://apiservice.vitamindata.net/api/v1/GetVPSStatsCanlı CPU, yaddaş, disk və şəbəkə.
Sorğu
idstringməcburi
Serverin id-si, ListVPS siyahısından. Nəzərə alın ki, idarəetmə feillərində sahə id adlanır — yalnız pul feilləri onu vps_id yazır.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/GetVPSStats \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n"}'
Cavab200 · application/json
cpu_pctint
CPU yükü, faizlə.
mem_used_mbint
İstifadədə olan yaddaş, MB.
disk_used_mbint
İstifadədə olan disk, MB.
rx_bpsint64
Daxil olan, saniyədə bit.
tx_bpsint64
Xaric olan, saniyədə bit.
runningbool
Maşın indi işə salınmış vəziyyətdədir.
updated_atunix
Bu göstəricilərin götürüldüyü vaxt.
Nümunə cavab{
"cpu_pct": 12,
"mem_used_mb": 1536,
"disk_used_mb": 9216,
"rx_bps": "1048576",
"tx_bps": "524288",
"running": true,
"updated_at": "1785412790"
}
https://apiservice.vitamindata.net/api/v1/GetVPSUsageMaşının ayrılmış həcminə qarşı istifadə olunan trafik, paket üzrə.
Sorğu
idstringməcburi
Serverin id-si, ListVPS siyahısından. Nəzərə alın ki, idarəetmə feillərində sahə id adlanır — yalnız pul feilləri onu vps_id yazır.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/GetVPSUsage \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n"}'
Cavab200 · application/json
total_downbytes
Bütün dövr ərzində endirilən.
total_upbytes
Bütün dövr ərzində yüklənən.
bundlesarray
Trafik paketləri, indi boşalanı current ilə işarələnmiş halda.
bundles[].idint64
Trafik paketinin hesablama müstəvisindəki id-si.
bundles[].modeint
Müstəvinin uçot rejimi kodu. Qapalı sayın.
bundles[].bytes_totalbytes
Paketin tam həcmi.
bundles[].used_dlbytes
Ona qarşı endirilən.
bundles[].used_upbytes
Ona qarşı yüklənən.
bundles[].stateint
Müstəvinin vəziyyət kodu. Qapalı sayın.
bundles[].currentbool
İndi boşalan paket elə budur.
bundles[].expires_atunix
Paketin müddətinin bitdiyi vaxt.
Nümunə cavab{
"total_down": "53687091200",
"total_up": "10737418240",
"bundles": [
{"id": "41", "mode": 1, "bytes_total": "2199023255552",
"used_dl": "53687091200", "used_up": "10737418240",
"state": 1, "current": true, "expires_at": "1793188800"}
]
}
https://apiservice.vitamindata.net/api/v1/VPSPowerEnerji idarəsi.
shutdown əməliyyat sistemindən xahiş edir; force_stop isə fişi çəkir. Birincisinə üstünlük verin.
Sorğu
idstringməcburi
Serverin id-si, ListVPS siyahısından. Nəzərə alın ki, idarəetmə feillərində sahə id adlanır — yalnız pul feilləri onu vps_id yazır.
actionenumməcburi
shutdown/reboot mülayimdir; reset/force_stop isə enerji düyməsidir.
Bunlardan biri:startshutdownrebootresetforce_stop
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/VPSPower \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n","action":"reboot"}'
Cavab200 · application/json
okbool
Müstəvi əməliyyatı qəbul etdi. Maşının həqiqi vəziyyəti üçün GetVPSStats izləyin.
https://apiservice.vitamindata.net/api/v1/ReinstallVPSDiski silir və təzə imic quraşdırır.
Dağıdıcıdır və təkrar cəhdə DAVAMLI DEYİL — bir çağırış, bir yenidən quraşdırma. İmic cari diskə sığmalıdır; sığmırsa əvvəlcə diski böyüdün.
Sorğu
idstringməcburi
Serverin id-si, ListVPS siyahısından. Nəzərə alın ki, idarəetmə feillərində sahə id adlanır — yalnız pul feilləri onu vps_id yazır.
image_shastringməcburi
İmic, ListVPSImages siyahısındakı sha üzrə. İmici başqa heç nə adlandırmır və təklif olunmayan sha rədd edilir.
reset_rootboolkönüllü
Həmçinin təzə root şifrəsi yarat.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/ReinstallVPS \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n","image_sha":"9a1b8c2d7e6f","reset_root":true}'
Cavab200 · application/json
okbool
Müstəvi əməliyyatı qəbul etdi. Maşının həqiqi vəziyyəti üçün GetVPSStats izləyin.
https://apiservice.vitamindata.net/api/v1/AttachVPSISOQuraşdırıcı ISO qoşur. Ondan yükləmək üçün onu 1 yükləmə sırası ilə birlikdə işlədin.
Sorğu
idstringməcburi
Serverin id-si, ListVPS siyahısından. Nəzərə alın ki, idarəetmə feillərində sahə id adlanır — yalnız pul feilləri onu vps_id yazır.
image_shastringməcburi
İmic, ListVPSImages siyahısındakı sha üzrə. İmici başqa heç nə adlandırmır və təklif olunmayan sha rədd edilir.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/AttachVPSISO \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n","image_sha":"3f4e5d6c7b8a"}'
Cavab200 · application/json
okbool
Müstəvi əməliyyatı qəbul etdi. Maşının həqiqi vəziyyəti üçün GetVPSStats izləyin.
https://apiservice.vitamindata.net/api/v1/DetachVPSISOISO-nu çıxarır və diskdən yükləməyə qayıdır.
Sorğu
idstringməcburi
Serverin id-si, ListVPS siyahısından. Nəzərə alın ki, idarəetmə feillərində sahə id adlanır — yalnız pul feilləri onu vps_id yazır.
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/DetachVPSISO \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n"}'
Cavab200 · application/json
okbool
Müstəvi əməliyyatı qəbul etdi. Maşının həqiqi vəziyyəti üçün GetVPSStats izləyin.
POST
SetVPSBootOrder
manage
https://apiservice.vitamindata.net/api/v1/SetVPSBootOrderHansı cihazın əvvəl yüklənəcəyi.
Sorğu
idstringməcburi
Serverin id-si, ListVPS siyahısından. Nəzərə alın ki, idarəetmə feillərində sahə id adlanır — yalnız pul feilləri onu vps_id yazır.
orderenumməcburi
0 əvvəl disk, 1 əvvəl CD-ROM.
Bunlardan biri:01
Nümunə sorğucurl https://apiservice.vitamindata.net/api/v1/SetVPSBootOrder \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n","order":1}'
Cavab200 · application/json
okbool
Müstəvi əməliyyatı qəbul etdi. Maşının həqiqi vəziyyəti üçün GetVPSStats izləyin.