Vitamin API referansı
Kendi sitenizden, botunuzdan veya betiğinizden VPN hesapları ve sanal sunucular satıp yönetin.
Temel URLhttps://apiservice.vitamindata.net/api/v1
Anahtarlar panelinizde oluşturulur. Bölümü göremiyorsanız, hesabınız için API erişiminin açılmasını destekten isteyin.
1Panelinizde bir API anahtarı oluşturun ve her çağrıda bearer token olarak gönderin.
2Anahtarı kanıtlamak için Ping çağırın; ardından ListPlans ve GetVPSStorefront ile fiyatlarınızı çekin.
3FUNDING_AUTO ile satış yapın: bakiyeniz yetiyorsa ödemeyi bakiye karşılar, yetmiyorsa müşteriniz bir ödeme bağlantısı alır.
Kimlik doğrulama
Her istek anahtarınızı bearer token olarak taşır. Bu sunucuda çerez yoktur ve alınacak bir CSRF token'ı da yoktur — anahtar tek başına kimlik bilgisidir.
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Anahtarlar panelinizde API bölümünde oluşturulur. Gizli değer yalnızca bir kez, oluşturma anında gösterilir: biz yalnızca özetini (hash) saklarız. Kaybolursa çözüm anahtarı döndürmektir — bu yeni bir gizli değer üretir ve eskisini bir gün daha çalışır tutar, böylece kesinti olmadan dağıtım yapabilirsiniz.
Bir anahtar belirli kaynak adreslerine kısıtlanabilir, kendi dakikalık hız sınırına sahip olabilir ve belirli işlemler ondan esirgenebilir. Bunları operatörlerimiz ayarlar — örneğin satın alabilen ama hiçbir hizmeti silemeyen bir anahtar gerekiyorsa destekle görüşün.
Test anahtarları
sk_test_ ile başlayan bir anahtar gerçek verileri okur, ancak para harcayan ya da gerçek bir makineye dokunan hiçbir şeyi kabul etmez; böylece entegrasyonunuzu size hiçbir maliyeti olmadan kurup doğrulayabilirsiniz.
Bir hata nasıl görünür
Bilinmeyen bir anahtar ve API erişimi olmayan bir hesabın anahtarı, kelimesi kelimesine aynı 401 yanıtını alır: yanıt bir anahtarın var olup olmadığını asla doğrulamaz. İstisna, döndürmedeki örtüşme süresini aşmış kendi anahtarınızdır — bilerek api key expired der, çünkü o anahtarın gerçek olduğunu zaten biliyorsunuzdur ve neden durduğunu bilmeniz gerekir. Aynı adresten gelen tekrarlanan hatalar kısıtlanır — hız sınırlarına bakın.
Ödeme yapmak
Satın aldığınız her şey — bir VPN hesabı, bir uzatma, bir sunucu, bir yenileme, bir yükseltme — tek bir sözleşmeden geçer. Ödemenin nasıl yapılacağını siz seçersiniz:
funding | Ne olur |
|---|
FUNDING_AUTO | Önerilir. Bakiyeniz yetiyorsa oradan düşer; yetmiyorsa çağrı yine başarılı olur ve size bir ödeme bağlantısı verir. Tek çağrı, yorumlanacak hata yok. |
FUNDING_BALANCE | Yalnızca bakiye. Bakiye yetersizse çağrı insufficient_balance ile BAŞARISIZ olur (hata yine ödenebilir bir bağlantı taşır). |
FUNDING_INVOICE | Bakiyeniz yetecek olsa bile her zaman bir ödeme bağlantısı döndürür. |
FUNDING_AUTO ile tek bir alana bakarsı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, paranın alındığı ve teslimin başladığı anlamına gelir — durumu delivered olana kadar GetOrder çağrısını yoklayın. payment_required ise müşterinizi pay_url adresine yönlendirin; fatura ödendiğinde teslim kendiliğinden başlar.
Fiyatlar her zaman bizimdir. Güvence olarak expected_total_usd gönderebilirsiniz: güncel teklifimiz farklıysa satış price_changed ve yeni tutarla reddedilir; müşterinizin hiç görmediği bir tutar tahsil edilmez.
Güvenli yeniden deneme
Para harcayan her çağrıda bir Idempotency-Key başlığı gönderin. Yanıt size hiç ulaşmazsa — zaman aşımı, kopan bağlantı, yeniden dağıtılan bir süreç — AYNI isteği AYNI anahtarla yeniden gönderin; ikinci bir tahsilat yerine ilk sonucu geri alırsınız.
Idempotency-Key: 8f14e45f-ea6d-4b3a-9c1b-2f0d5a7e91c3
Her müşteri işlemi için yeni bir anahtar kullanın (UUID idealdir). Aynı anahtarı farklı bir gövdeyle yeniden kullanmak idempotency_conflict ile reddedilir — bu birleşim bir hata anlamına gelir ve hangi isteği kastettiğinizi tahmin etmek, size söylemekten daha kötü olurdu.
Hız sınırları
Kimliği doğrulanmış her yanıt, anahtarınızın nerede olduğunu söyler:
RateLimit-Limit: 6000
RateLimit-Remaining: 5987
RateLimit-Policy: 6000;w=60
Sınır anahtar başına ve dakika başınadır, hesabınız için ayarlanır — varsayılan bir mağazaya uygundur; yoğun bir bot varsayılanla kendini yavaşlatmak yerine artırım istemelidir. Aşıldığında Retry-After ile 429 döner.
Tek bir adresten gelen çok sayıda istek kimlik doğrulamada başarısız olursa da 429 görülür. Bu kotanız değil, kaba kuvvet korumasıdır: kendiliğinden temizlenir (başlık ne zaman olduğunu söyler) ve çalışan bir anahtar bunu asla tetiklemez.
Her yanıtta, anahtarsız olanlar dahil, bir de X-Ratelimit-* ailesi görürsünüz. Bu, tüm API'nin önünde duran, ADRES başına kaba bir frendir; anahtarınızın bütçesi değildir — hızınızı RateLimit-Remaining değerine göre ayarlayın ve X- başlıklarını sizi ilgilendirmeyen bir şey sayın.
Hatalar
Hatalar bir HTTP durum kodu ve bir JSON gövdesi olarak döner. Üst düzey code taşıma kategorisidir; üst düzey message kararlı makine kodunu taşır. Tam ayrıntı — aynı makine kodu, güvenli bir cümle ve işe yarar ek alanlar — details içinde debug altında gelir:
{"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"}}]}
Hata kanalının, ikisi de kodda hesaba katmaya değer iki tuhaflığı vardır: value base64 protobuf'tır (yok sayın — debug okuyun) ve debug içindeki ek alanlar lowerCamelCase yazılır — payUrl, orderId, totalUsd, retryAfterSeconds — bu bir Connect geleneğidir, diğer her yerdeki snake_case'in aksine. Üst düzey message alanına veya debug.code değerine göre dallanın; asla cümleye göre değil.
İsteğiniz yetkilendirilmeden önce gelen retler
Bir işleyiciye hiç ulaşmayan istek — anahtar yok ya da geçersiz (401), anahtarın izin vermediği bir kaynak adresi (403), bir hız sınırı (429), bir kimlik doğrulama kesintisi (503) — ön kapıda reddedilir ve ön kapı DAHA KISA bir gövde döner: bir taşıma code değeri ve düz bir cümle; details yok, makine kodu yok.
{"code": "unauthenticated", "message": "invalid api key"}
Bu yüzden bunlarda HTTP DURUM KODUNA göre dallanın (ve Retry-After başlığına uyun — 429 yanıtlarında gelir); aşağıdaki makine kodları, bir işleyiciye kadar ulaşabilmiş çağrılara aittir. Adres başına uygulanan kaba fren daha da eskidir ve {"error":"rate_limited"} döner — error anahtarıyla, code ile değil.
| Kod | Anlamı | Ne yapmalı |
|---|
forbidden_scope | Anahtar bu çağrı için gereken kapsama sahip değil ya da bu işlem ondan esirgenmiş. | Anahtarın kapsamını genişletmesi için destekle görüşün. |
not_found | Bu hesap için böyle bir nesne yok. | Kimliği kontrol edin. Başka bir hesabın kimliği de bu yanıtı alır — tasarım gereği. |
invalid_request | Bir alan bozuk. | Düzeltip yeniden gönderin; değiştirmeden yeniden denemek işe yaramaz. |
insufficient_balance | Yalnızca bakiyeyle ödeme yetersiz kaldı. | Ayrıntıdaki payUrl değerini kullanın veya FUNDING_AUTO moduna geçin. |
price_changed | expected_total_usd değeriniz artık uyuşmuyor. | Yeniden teklif alın ve yeni tutarı müşterinizle onaylayın. |
idempotency_conflict | O anahtar farklı bir gövdeyle kullanılmış. | Her işlem için yeni bir anahtar kullanın. |
sandbox_unavailable | Bir sk_test_ anahtarı para harcamayı ya da gerçek bir makineye dokunmayı denedi. | Beklenen durum — o çağrı için canlı bir anahtar kullanın. Test anahtarları okur, asla satın almaz. |
unpriceable | İstediğiniz yapılandırma satılamaz — fiyatlanmamış bir plan ya da düğüm veya hiçbir modelin kapsamadığı bir sepet. | Satın almadan önce mağazayı yeniden okuyup teklif alın; aynı sepeti bir teklif de reddeder. |
upstream_unavailable | Bağlı olduğumuz bir sistem katmanı çalışmıyor. | Artan aralıklarla (backoff) yeniden deneyin; okumalar kısa süreliğine eski olabilir. |
order_failed | Ödemeden sonra teslim başarısız oldu. | Yeniden satın almayın. GetOrder çağrısını yoklayın; bunları otomatik olarak kurtarıyoruz ve destek durumu görebilir. |
internal | Bizim tarafımızda, sınıflandırmadığımız bir şey bozuldu. | Artan aralıkla (backoff) bir kez yeniden deneyin; tekrarlıyorsa X-Request-Id değerini destekle paylaşın. |
Kurallar
- Taşıma. Her çağrı, JSON gövdeli bir
POST {base}/{Method} isteğidir — POST /api/v1/CreateVPNOrder. Başka bir şey yoktur: diğer her HTTP metodu 405 döner, REST fiil eşlemesi yoktur ve yol parametresi yoktur. - Para bir metindir.
"19.99", asla 19.99 değil: JSON sayısı çoğu dilde kayan noktalıdır ve bir kuruşu tam olarak tutamaz. - 64-bit tamsayılar metin olarak gelir. Her bayt sayısı ve her unix zaman damgası 64 bittir ve hat üzerinde tırnak içinde taşınır —
"remaining_bytes": "96636764160". Bunları tamsayı olarak ayrıştırın; isteklerde iki biçimi de gönderebilirsiniz. - Sıfır atlanır. Değeri
0, false veya boş olan bir alan yanıtta hiç görünmez. Eksik alanı sıfır sayın — ve unutmayın, 0 günlük sınır "0 GB" değil, sınır YOK demektir. - Zamanlar unix saniyedir; tek istisna, RFC3339 veya
YYYY-MM-DD alıp döndüren işlem penceresidir. - Trafik bayt cinsindendir, hiçbir rakamda asla gigabayt değil.
- Kimlikler opaktır.
acc_…, ord_…, vpn_…. Hiçbirini ayrıştırmayın veya kendiniz üretmeyin, sıralı olduklarını da varsaymayın. - Sayfalama opak imleçle yapılır: önceki yanıtın
next_cursor değerini geri gönderin. Boş bir next_cursor her şeyi aldığınız anlamına gelir. - Alan tabloları kısa tip belirteçleri kullanır.
money — tam bir ondalık metin; unix — unix saniyesi (64 bit, dolayısıyla metin); bytes — bayt sayısı (64 bit, dolayısıyla metin); int64 — diğer her 64-bit değer (metin); int — 32 bit, düz sayı; cursor — opak bir sayfalama tutamacı; enum — listelenen değerlerden tam olarak biri. - Yeni alanlar önceden haber verilmeden eklenir ve var olanların anlamı değişmez. Tanımadığınızı yok sayın.
Başlarken
İlk yapılacak çağrı: anahtarın çalıştığını kanıtlar ve hangi hesaba ait olduğunu söyler.
https://apiservice.vitamindata.net/api/v1/PingHesap kimliğinizi, anahtarın canlı mı test mi olduğunu ve saatimizi döner.
İstek
Parametre yok — boş bir nesne gönderin: {}.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/Ping \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{}'
Yanıt200 · application/json
account_idstring
Anahtarın hesabı — anahtarın çözümlendiğinin kanıtı.
modeenum
Ne tür bir anahtar gönderdiğiniz.
Şunlardan biri:livetest
server_timeunix
Saatimiz — saat kaymasını, imzaları veya pencereleri bozmadan önce fark etmek için yararlı.
Örnek yanıt{
"account_id": "acc_9f3k2m7q",
"mode": "live",
"server_time": "1785412800"
}
Hesap ve bakiye
https://apiservice.vitamindata.net/api/v1/GetAccountHesabınızın e-postası, durumu, dili ve adresin doğrulanmış olup olmadığı.
İstek
Parametre yok — boş bir nesne gönderin: {}.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/GetAccount \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{}'
Yanıt200 · application/json
account.account_idstring
Genel kimlik (acc_…).
account.emailstring
Oturum açma adresi.
account.statusstring
Hesap kısıtlanmadıkça active.
account.localestring
Hesabın dili — kart adları ve bildirimler bu dile yerelleştirilir.
account.email_verifiedbool
Adres doğrulanmış.
account.created_atunix
Hesabın oluşturulduğu an.
Örnek yanıt{
"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/GetBalanceDefter bakiyeniz ve bir satın almanın gerçekten kullanabileceği tutar.
available_usd, satın almadan önce bakılacak sayıdır — devam eden bir siparişin kilitlediği tutarı içermez.
İstek
Parametre yok — boş bir nesne gönderin: {}.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/GetBalance \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{}'
Yanıt200 · application/json
balance_usdmoney
Tam defter bakiyesi.
available_usdmoney
Bakiye eksi kilitler — bir satın almanın şu anda harcayabileceği tutar.
as_ofstring
Rakamların defterdeki zaman damgası, RFC3339.
Örnek yanıt{
"balance_usd": "72.60",
"available_usd": "60.70",
"as_of": "2026-07-29T12:00:00Z"
}
https://apiservice.vitamindata.net/api/v1/ListTransactionsDefteriniz, en yeni önce.
Varsayılan olarak son üç ay. 92 günden geniş bir pencere daraltılır ve yanıt gerçekte kullandığı pencereyi söyler — böylece kısa bir yanıt asla belirsiz olmaz.
İstek
limitintisteğe bağlı
Sayfa boyutu. Varsayılan 25, en çok 100.
cursorcursoristeğe bağlı
Önceki yanıtın next_cursor değeri. İlk sayfa için atlayın.
kindstringisteğe bağlı
Aşağıdaki kind değerleri üzerinde isteğe bağlı, virgülle ayrılmış filtre.
fromstringisteğe bağlı
Pencere başlangıcı, RFC3339 veya YYYY-MM-DD.
tostringisteğe bağlı
Pencere sonu. Yalnızca tarih içeren bir to o günün tamamını kapsar.
Örnek istekcurl 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"}'
Yanıt200 · application/json
transactionsarray
Defter satırları.
transactions[].idstring
Defter satırının kimliği.
transactions[].tsstring
Ne zaman, RFC3339.
transactions[].kindenum
Parayı neyin hareket ettirdiği. topup_credit ödenmiş bir bakiye yüklemesidir; iki invoice_debit_* türü satın almalardır. Devam eden bir siparişin içerideki kilitleme ve serbest bırakma hareketleri bu akışın parçası değildir.
Şunlardan biri:topup_creditexternal_creditinvoice_debit_reservedinvoice_debit_externaloverpay_creditmanual_creditmanual_debitspend_debitspend_refundautomated_correction
transactions[].amount_usdmoney
İşaretli — borç kayıtlarında negatif.
transactions[].balance_after_usdmoney
Bu satırdan sonraki yürüyen bakiye.
transactions[].ref_invoice_idstring
Hareketin arkasındaki fatura — tüm hikâye için GetInvoice çağrısına verin.
transactions[].descriptionstring
Kısa, insan için bir etiket. Yalnızca görüntülemek için; asla buna göre dallanmayın.
next_cursorcursor
Sonraki sayfa için cursor olarak geri gönderin. Yok/boş = her şey elinizde.
has_morebool
Bu sayfanın ötesinde başka satırlar var.
fromstring
GERÇEKTE uygulanan pencere (RFC3339). İstediğinizden darsa ⇒ 92 günlük sınıra takıldınız.
tostring
Uygulanan pencerenin sonu.
Örnek yanıt{
"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/CreateTopupBakiyenize para ekleyen, ödenebilir bir fatura oluşturur.
Müşterinizi (veya kendinizi) invoice.pay_url adresine yönlendirin. Bakiye, fatura ödendiğinde hareket eder.
İstek
amount_usdmoneyzorunlu
Ne kadar ekleneceği, ondalık metin olarak.
Örnek istekcurl 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"}'
Yanıt200 · application/json
invoiceobject
Ödenebilir fatura.
invoice.invoice_idstring
Ödeme geçidinin fatura kimliği (inv_…).
invoice.statusenum
pending ödenebilir demektir. confirmed'dan delivered_redirected'a kadar her şey paranın geri dönülmez biçimde girdiği anlamına gelir — hepsini ÖDENDİ sayın. expired, bağlantının ödenmeden süresinin dolduğu anlamına gelir.
Şunlardan biri:pendingconfirmedsweepingsweptdeliveringdelivereddelivered_redirectedexpired
invoice.pay_urlstring
Barındırılan ödeme sayfası. Müşterinizi buraya gönderin; her ödeme yolu (koinler, zincirler, bakiye) bunun arkasındadır.
invoice.pay_telegram_urlstring
Aynı fatura, Telegram içinde ödenebilir hâlde: ödeme sağlayıcısının kendi botunu açar, bot tutarı gösterir ve ödemeyi orada alır. Uygulamadan çıkmak istemeyen müşteriler için pay_url ile birlikte sunun. Bulunmayabilir — yalnızca botu yapılandırılmış bir ödeme sağlayıcısında vardır, bu yüzden asla tek ödeme düğmeniz olmasın.
invoice.price_usdmoney
Faturanın tahsil ettiği tutar.
invoice.expires_atunix
Ödeme penceresinin kapandığı an.
Örnek yanıt{
"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 ödemenin tüm ayrıntıları, zincirde görünenler dahil.
Bir defter satırının ref_invoice_id değeri birleştirme anahtarıdır. Yalnızca kendi hesabınızın oluşturduğu faturalar okunabilir.
İstek
invoice_idstringzorunlu
Bir defter satırının ref_invoice_id alanından, bir siparişten veya bir bakiye yüklemesinden.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/GetInvoice \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"invoice_id":"inv_5k8p2q"}'
Yanıt200 · application/json
invoiceobject
Faturanın kendisi.
invoice.invoice_idstring
Ödeme geçidinin fatura kimliği (inv_…).
invoice.statusenum
pending ödenebilir demektir. confirmed'dan delivered_redirected'a kadar her şey paranın geri dönülmez biçimde girdiği anlamına gelir — hepsini ÖDENDİ sayın. expired, bağlantının ödenmeden süresinin dolduğu anlamına gelir.
Şunlardan biri:pendingconfirmedsweepingsweptdeliveringdelivereddelivered_redirectedexpired
invoice.pay_urlstring
Barındırılan ödeme sayfası. Müşterinizi buraya gönderin; her ödeme yolu (koinler, zincirler, bakiye) bunun arkasındadır.
invoice.pay_telegram_urlstring
Aynı fatura, Telegram içinde ödenebilir hâlde: ödeme sağlayıcısının kendi botunu açar, bot tutarı gösterir ve ödemeyi orada alır. Uygulamadan çıkmak istemeyen müşteriler için pay_url ile birlikte sunun. Bulunmayabilir — yalnızca botu yapılandırılmış bir ödeme sağlayıcısında vardır, bu yüzden asla tek ödeme düğmeniz olmasın.
invoice.price_usdmoney
Faturanın tahsil ettiği tutar.
invoice.expires_atunix
Ödeme penceresinin kapandığı an.
paymentsarray
Zincirin gösterdikleri. Bakiyeden ödenen bir faturada (zincir işin içinde değildi) ve henüz kimsenin ödemediği bir faturada boştur — boş liste bir hata değildir.
payments[].chainstring
Ödemenin geldiği ağ (tron, bsc, …).
payments[].assetstring
Ne ile ödendiği (USDT, …).
payments[].amountmoney
Varlık miktarı, tam değer.
payments[].tx_hashstring
Zincir üstündeki işlem — müşterinizin ödeme kanıtı.
payments[].confirmedbool
Zincir işlemi kesinleştirdi.
payments[].seen_atunix
İlk gözlemlediğimiz an.
order_idstring
Faturanın ne satın aldığı. Hiçbir şey satın almayan bakiye yüklemesinde yoktur.
Örnek yanıt{
"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"
}
Fiyatlar
Buradaki hiçbir şey bir kayıt oluşturmaz — müşteriniz karar vermeden önce istediğiniz kadar fiyat sorun.
https://apiservice.vitamindata.net/api/v1/ListPlansSatabilecekleriniz: kaydırıcının sınırları ve mağazanız kullanıyorsa sabit fiyatlı kartlar.
Hangisi doluysa onu gösterin. Bir kart, bundle_id değeri sepete konarak satın alınır; kaydırıcı sepeti gb/ay/kullanıcı kullanır.
İstek
Parametre yok — boş bir nesne gönderin: {}.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/ListPlans \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{}'
Yanıt200 · application/json
model_namestring
Mağazanızın fiyatlandırma modeli.
model_typestring
Motor sürümü.
boundsobject
Yapılandırıcının kuralları — her teklif ve sipariş bunları sunucu tarafında yeniden denetler.
bounds.gb_minint
Bir sepetin isteyebileceği en küçük trafik.
bounds.gb_maxint
En büyüğü.
bounds.gb_stepint
Kaydırıcının adımı.
bounds.users_minint
En az eşzamanlı cihaz sayısı.
bounds.users_maxint
En fazlası.
bounds.months_minint
En kısa süre.
bounds.months_maxint
En uzunu.
bounds.new_accounts_maxint
Bir siparişin oluşturabileceği en fazla hesap sayısı.
bounds.extend_maxint
Bir siparişin uzatabileceği en fazla hesap sayısı.
bounds.default_gbint
Kaydırıcı için makul bir varsayılan.
bounds.default_usersint
Varsayılan cihaz sayısı.
bounds.default_monthsint
Varsayılan süre.
bundlesarray
Mağazanız bir kart kataloğuysa, sabit fiyatlı kartlar.
bundles[].bundle_idstring
cart.bundle_id alanına konacak tanıtıcı.
bundles[].namestring
Kartın adı, hesabın diline göre zaten yerelleştirilmiş.
bundles[].gbint
Dahil edilen trafik.
bundles[].monthsint
Geçerlilik süresi.
bundles[].online_usersint
Eşzamanlı cihaz sayısı.
bundles[].price_usdmoney
Fiyat. Fiyat BUDUR — bir kart için teklif gerekmez.
bundles[].highlightbool
Mağazanın öne çıkan kartı.
bundles[].daily_cap_gbint
GB olarak günlük üst sınır. Yoksa = sınır yok.
Örnek yanıt{
"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/QuoteBir VPN sepetinin nihai fiyatı, kalem kalem. İndirimler zaten uygulanmıştır.
İstek
cartobjectzorunlu
Fiyatlanacak sepet.
cart.kindenumzorunlu
Yeni hesap satın alın ya da mevcutlara trafik ve süre ekleyin.
Şunlardan biri:newextend
cart.gbintisteğe bağlı
Hesap başına trafik, GB olarak, ListPlans'tan gelen sınırlar içinde.
cart.monthsintisteğe bağlı
Hesap başına geçerlilik, ay olarak.
cart.usersintisteğe bağlı
Hesap başına eşzamanlı cihaz sayısı.
cart.new_accountsintisteğe bağlı
Yalnızca kind:"new": kaç hesap oluşturulacağı. Kullanıcı adlarını sunucu üretir.
cart.extend_vpn_idsarrayisteğe bağlı
Yalnızca kind:"extend": uzatılacak hesaplar, genel kimlikleriyle.
cart.bundle_idstringisteğe bağlı
Yapılandırılmış bir sepet yerine ListPlans.bundles içinden sabit fiyatlı bir kart satın alır. Ayarlandığında gb/ay/kullanıcı yok sayılır — kartın kendi değerleri ve fiyatı geçerlidir.
Örnek istekcurl 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 isteğin diğer biçimleriHalihazırda sahip olduğunuz hesapları uzatın{"cart":{"kind":"extend","gb":50,"months":1,"users":3,"extend_vpn_ids":["vpn_6t2k9p","vpn_1a4b7c"]}}
Yapılandırılmış sepet yerine sabit fiyatlı bir kart alın{"cart":{"kind":"new","bundle_id":"card_100_1m","new_accounts":1}}
Yanıt200 · application/json
quoteobject
Kalem kalem fiyat. Hiçbir şey oluşturulmaz ve hiçbir şey tahsil edilmez.
quote.model_namestring
Hangi fiyatlandırma modelinin yanıtladığı.
quote.model_typestring
Modelin motor sürümü.
quote.base_usdmoney
İndirimler ve ek ücretler öncesi fiyat.
quote.total_usdmoney
Nihai fiyat — bu sepetle yapılan bir satışın tahsil edeceği tutar.
quote.linesarray
Kalem dökümü, işaretli; toplamı tam olarak nihai tutarı verir.
quote.lines[].codestring
Bu satırın ne olduğu (base, bir indirim kodu, bir ek ücret…).
quote.lines[].kindstring
Satırın kategorisi, arayüzünüzde gruplamak için.
quote.lines[].amount_usdmoney
İşaretli. İndirimler negatiftir; satırların toplamı tam olarak total_usd eder.
quote.lines[].pctstring
Varsa, satırın arkasındaki yüzde.
quote.cappedbool
Toplam, modelin üst sınırına takıldı.
quote.floor_appliedbool
Toplam, modelin taban fiyatına yükseltildi.
quote.clampedenum
Bir sepet değeri fiyatlamadan önce sınırların içine çekildiğinde ayarlanır.
Şunlardan biri:minmax
quote.invalidstring
Boş değilse sepet fiyatlanamıyor demektir — gösterin ve böyle bir teklifi ASLA tahsil etmeyin.
quote.metamap
Model ekstraları, metin→metin (ör. bir yükseltmenin remaining_days değeri).
Örnek yanıt{
"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 hesapları satın alır veya mevcut olanları uzatır (extend_vpn_ids ile "kind":"extend").
Yanıtın alabileceği iki biçim için Ödeme yapmak bölümüne bakın.
İstek
cartobjectzorunlu
Ne satın alınacağı — Quote'un fiyatladığı biçimle aynı.
cart.kindenumzorunlu
Yeni hesap satın alın ya da mevcutlara trafik ve süre ekleyin.
Şunlardan biri:newextend
cart.gbintisteğe bağlı
Hesap başına trafik, GB olarak, ListPlans'tan gelen sınırlar içinde.
cart.monthsintisteğe bağlı
Hesap başına geçerlilik, ay olarak.
cart.usersintisteğe bağlı
Hesap başına eşzamanlı cihaz sayısı.
cart.new_accountsintisteğe bağlı
Yalnızca kind:"new": kaç hesap oluşturulacağı. Kullanıcı adlarını sunucu üretir.
cart.extend_vpn_idsarrayisteğe bağlı
Yalnızca kind:"extend": uzatılacak hesaplar, genel kimlikleriyle.
cart.bundle_idstringisteğe bağlı
Yapılandırılmış bir sepet yerine ListPlans.bundles içinden sabit fiyatlı bir kart satın alır. Ayarlandığında gb/ay/kullanıcı yok sayılır — kartın kendi değerleri ve fiyatı geçerlidir.
fundingenumzorunlu
Nasıl ödeneceği — bkz. Ödeme yapmak. Varsayılan yoktur: atlanırsa istek reddedilir.
Şunlardan biri:FUNDING_AUTOFUNDING_BALANCEFUNDING_INVOICE
expected_total_usdmoneyisteğe bağlı
Onay güvencesi. Ayarlıysa ve güncel teklifimiz farklıysa, müşterinizin hiç görmediği bir tutarı tahsil etmek yerine satış price_changed ile reddedilir.
Örnek istekcurl 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 isteğin diğer biçimleriHalihazırda sahip olduğunuz hesapları uzatın{"cart":{"kind":"extend","gb":50,"months":1,"users":3,"extend_vpn_ids":["vpn_6t2k9p"]},"funding":"FUNDING_AUTO"}
Sabit fiyatlı bir kartı bakiyeden ödeyerek alın{"cart":{"kind":"new","bundle_id":"card_100_1m","new_accounts":1},"funding":"FUNDING_BALANCE"}
Yanıt200 · application/json
orderobject
Sipariş — durumu delivered olana kadar GetOrder çağrısını yoklayın.
order.order_idstring
Siparişin genel kimliği (ord_…).
order.productenum
Ne satın alındığı.
Şunlardan biri:vpnvps
order.kindstring
Satın alma biçimi: new, extend, upgrade…
order.statusenum
Yaşam döngüsü. Hedef delivered'dır; needs_operator, paranın alındığı ve teslimi bir insanın tamamlamakta olduğu anlamına gelir — yeniden satın almayın; expired, faturanın ödenmeden süresinin dolduğu anlamına gelir.
Şunlardan biri:createdinvoicedpaiddeliveringdeliveredneeds_operatorfailedrefund_pendingrefundedexpired
order.fundingenum
Ödemeyi gerçekte hangi yolun karşıladığı. FUNDING_AUTO bunlardan birine çözümlenir.
Şunlardan biri:invoicebalance
order.total_usdmoney
Siparişin tahsil ettiği tutar.
order.invoice_idstring
Arkasındaki fatura — hangi yol öderse ödesin, her siparişin bir faturası vardır.
order.itemsint
Siparişin kaç hak oluşturduğu veya uzattığı.
order.created_atunix
Siparişin verildiği an.
order.delivered_atunix
Teslimin bittiği an. O ana kadar yoktur.
order.breakdownobject
Müşterinin onayladığı teklif, olduğu gibi — Quote'un döndürdüğüyle aynı biçim.
invoiceobject
Siparişin arkasındaki fatura: payment_required iken ödenebilir, completed iken zaten kapanmıştır.
invoice.invoice_idstring
Ödeme geçidinin fatura kimliği (inv_…).
invoice.statusenum
pending ödenebilir demektir. confirmed'dan delivered_redirected'a kadar her şey paranın geri dönülmez biçimde girdiği anlamına gelir — hepsini ÖDENDİ sayın. expired, bağlantının ödenmeden süresinin dolduğu anlamına gelir.
Şunlardan biri:pendingconfirmedsweepingsweptdeliveringdelivereddelivered_redirectedexpired
invoice.pay_urlstring
Barındırılan ödeme sayfası. Müşterinizi buraya gönderin; her ödeme yolu (koinler, zincirler, bakiye) bunun arkasındadır.
invoice.pay_telegram_urlstring
Aynı fatura, Telegram içinde ödenebilir hâlde: ödeme sağlayıcısının kendi botunu açar, bot tutarı gösterir ve ödemeyi orada alır. Uygulamadan çıkmak istemeyen müşteriler için pay_url ile birlikte sunun. Bulunmayabilir — yalnızca botu yapılandırılmış bir ödeme sağlayıcısında vardır, bu yüzden asla tek ödeme düğmeniz olmasın.
invoice.price_usdmoney
Faturanın tahsil ettiği tutar.
invoice.expires_atunix
Ödeme penceresinin kapandığı an.
paidbool
Para tahsil edildi. payment_required ile birlikte yoktur (= false).
statusenum
Dallanılacak ASIL alan — bkz. Ödeme yapmak.
Şunlardan biri:completedpayment_required
Örnek yanıt{
"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/GetOrderSatın aldıktan sonra bunu yoklayın: created → invoiced → paid → delivering → delivered.
İstek
order_idstringzorunlu
Verdiğiniz siparişten.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/GetOrder \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"order_id":"ord_7b2c9d"}'
Yanıt200 · application/json
orderobject
Sipariş, tam dökümüyle.
order.order_idstring
Siparişin genel kimliği (ord_…).
order.productenum
Ne satın alındığı.
Şunlardan biri:vpnvps
order.kindstring
Satın alma biçimi: new, extend, upgrade…
order.statusenum
Yaşam döngüsü. Hedef delivered'dır; needs_operator, paranın alındığı ve teslimi bir insanın tamamlamakta olduğu anlamına gelir — yeniden satın almayın; expired, faturanın ödenmeden süresinin dolduğu anlamına gelir.
Şunlardan biri:createdinvoicedpaiddeliveringdeliveredneeds_operatorfailedrefund_pendingrefundedexpired
order.fundingenum
Ödemeyi gerçekte hangi yolun karşıladığı. FUNDING_AUTO bunlardan birine çözümlenir.
Şunlardan biri:invoicebalance
order.total_usdmoney
Siparişin tahsil ettiği tutar.
order.invoice_idstring
Arkasındaki fatura — hangi yol öderse ödesin, her siparişin bir faturası vardır.
order.itemsint
Siparişin kaç hak oluşturduğu veya uzattığı.
order.created_atunix
Siparişin verildiği an.
order.delivered_atunix
Teslimin bittiği an. O ana kadar yoktur.
order.breakdownobject
Müşterinin onayladığı teklif, olduğu gibi — Quote'un döndürdüğüyle aynı biçim.
invoiceobject
Yalnızca sipariş hâlâ ödeme beklerken doludur — her yerdekiyle aynı biçim.
Örnek yanıt{
"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/ListOrdersSipariş geçmişiniz, en yeni önce.
İstek
limitintisteğe bağlı
Sayfa boyutu. Varsayılan 25, en çok 100.
cursorcursoristeğe bağlı
Önceki yanıtın next_cursor değeri. İlk sayfa için atlayın.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/ListOrders \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"limit":25,"cursor":""}'
Yanıt200 · application/json
orders[].order_idstring
Siparişin genel kimliği (ord_…).
orders[].productenum
Ne satın alındığı.
Şunlardan biri:vpnvps
orders[].kindstring
Satın alma biçimi: new, extend, upgrade…
orders[].statusenum
Yaşam döngüsü. Hedef delivered'dır; needs_operator, paranın alındığı ve teslimi bir insanın tamamlamakta olduğu anlamına gelir — yeniden satın almayın; expired, faturanın ödenmeden süresinin dolduğu anlamına gelir.
Şunlardan biri:createdinvoicedpaiddeliveringdeliveredneeds_operatorfailedrefund_pendingrefundedexpired
orders[].fundingenum
Ödemeyi gerçekte hangi yolun karşıladığı. FUNDING_AUTO bunlardan birine çözümlenir.
Şunlardan biri:invoicebalance
orders[].total_usdmoney
Siparişin tahsil ettiği tutar.
orders[].invoice_idstring
Arkasındaki fatura — hangi yol öderse ödesin, her siparişin bir faturası vardır.
orders[].itemsint
Siparişin kaç hak oluşturduğu veya uzattığı.
orders[].created_atunix
Siparişin verildiği an.
orders[].delivered_atunix
Teslimin bittiği an. O ana kadar yoktur.
orders[].breakdownobject
Müşterinin onayladığı teklif, olduğu gibi — Quote'un döndürdüğüyle aynı biçim.
next_cursorcursor
Sonraki sayfa için cursor olarak geri gönderin. Yok/boş = her şey elinizde.
Örnek yanıt{
"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 yönetimi
https://apiservice.vitamindata.net/api/v1/ListVPNElinizdeki tüm VPN hesapları, kalan trafik ve bitiş tarihiyle.
İstek
limitintisteğe bağlı
Sayfa boyutu. Varsayılan 50, en çok 200.
cursorcursoristeğe bağlı
Önceki yanıtın next_cursor değeri. İlk sayfa için atlayın.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/ListVPN \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"limit":25,"cursor":""}'
Yanıt200 · application/json
vpns[].vpn_idstring
Diğer tüm VPN fiillerinin aldığı genel kimlik.
vpns[].usernamestring
Uygulamalarda gösterilen kimlik bilgisi adı.
vpns[].statusstring
Hesabın panelde göründüğü hâliyle durumu — askıya alınmadıkça veya süresi dolmadıkça active.
vpns[].remaining_bytesbytes
Tüm paketlerinde kalan toplam trafik.
vpns[].total_downloadbytes
Tüm zamanların indirmesi, canlı VPN düzleminin bildirdiği gibi. ListVPN içinde her zaman 0'dır — liste, yön kırılımı olmayan önbellekten gelir. Liste için used_bytes, kırılım için GetVPN/GetVPNUsage kullanın.
vpns[].total_uploadbytes
Tüm zamanların yüklemesi. total_download ile aynı uyarı: ListVPN içinde 0.
vpns[].used_bytesbytes
Gerçekten harcanan tüm zamanların trafiği (indirme + yükleme). Bu değer her VPN için tutulur, bu yüzden ListVPN dahil tüm uç noktalarda doğrudur.
vpns[].expires_atunix
Hesabın sona erdiği an.
vpns[].max_onlineint
İzin verilen eşzamanlı cihaz sayısı.
vpns[].daily_limit_bytesbytes
Bugünün üst sınırı. Yok/0 = günlük sınır YOK.
vpns[].daily_used_bytesbytes
Bugünün üst sınırından harcanan.
vpns[].daily_reset_unixunix
Günlük sayacın sıfırlandığı an.
vpns[].allowed_protocolsint
Uygulamalarımızın kullandığı bir protokol bit maskesi. Opak kabul edin.
vpns[].cache_atunix
Rakamların tazeliği: live ayarlı değilse bu zaman damgası kadar eskidirler.
vpns[].created_atunix
Hesabın oluşturulduğu an.
vpns[].livebool
Rakamlar önbellekten değil, az önce ağdan geldi.
next_cursorcursor
Sonraki sayfa için cursor olarak geri gönderin. Yok/boş = her şey elinizde.
Örnek yanıt{
"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ın ayrıntıları. live:true, sayıların şu anda ağdan geldiği anlamına gelir.
İstek
vpn_idstringzorunlu
Hesabın genel kimliği (vpn_…), ListVPN'den veya bir siparişin tesliminden.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/GetVPN \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vpn_id":"vpn_6t2k9p"}'
Yanıt200 · application/json
vpn.vpn_idstring
Diğer tüm VPN fiillerinin aldığı genel kimlik.
vpn.usernamestring
Uygulamalarda gösterilen kimlik bilgisi adı.
vpn.statusstring
Hesabın panelde göründüğü hâliyle durumu — askıya alınmadıkça veya süresi dolmadıkça active.
vpn.remaining_bytesbytes
Tüm paketlerinde kalan toplam trafik.
vpn.total_downloadbytes
Tüm zamanların indirmesi, canlı VPN düzleminin bildirdiği gibi. ListVPN içinde her zaman 0'dır — liste, yön kırılımı olmayan önbellekten gelir. Liste için used_bytes, kırılım için GetVPN/GetVPNUsage kullanın.
vpn.total_uploadbytes
Tüm zamanların yüklemesi. total_download ile aynı uyarı: ListVPN içinde 0.
vpn.used_bytesbytes
Gerçekten harcanan tüm zamanların trafiği (indirme + yükleme). Bu değer her VPN için tutulur, bu yüzden ListVPN dahil tüm uç noktalarda doğrudur.
vpn.expires_atunix
Hesabın sona erdiği an.
vpn.max_onlineint
İzin verilen eşzamanlı cihaz sayısı.
vpn.daily_limit_bytesbytes
Bugünün üst sınırı. Yok/0 = günlük sınır YOK.
vpn.daily_used_bytesbytes
Bugünün üst sınırından harcanan.
vpn.daily_reset_unixunix
Günlük sayacın sıfırlandığı an.
vpn.allowed_protocolsint
Uygulamalarımızın kullandığı bir protokol bit maskesi. Opak kabul edin.
vpn.cache_atunix
Rakamların tazeliği: live ayarlı değilse bu zaman damgası kadar eskidirler.
vpn.created_atunix
Hesabın oluşturulduğu an.
vpn.livebool
Rakamlar önbellekten değil, az önce ağdan geldi.
livebool
Ağdan taze. Yok = okuma modelinden sunuldu, cache_at kadar eski.
Örnek yanıt{
"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/GetVPNUsageKullanılan ve kalan trafik, varsa bugünün üst sınırı.
İstek
vpn_idstringzorunlu
Hesabın genel kimliği (vpn_…), ListVPN'den veya bir siparişin tesliminden.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/GetVPNUsage \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vpn_id":"vpn_6t2k9p"}'
Yanıt200 · application/json
vpn_idstring
Aynen geri döner.
remaining_bytesbytes
Kalan trafik.
total_downloadbytes
Ömür boyu indirme.
total_uploadbytes
Ömür boyu yükleme.
expires_atunix
Hesabın sona erdiği an.
daily_limit_bytesbytes
Bugünün üst sınırı. Yoksa = sınır yok.
daily_used_bytesbytes
Bugünün üst sınırından harcanan.
daily_reset_unixunix
Günlük sayacın sıfırlandığı an.
cache_atunix
Canlı değilken rakamların tazeliği.
livebool
Az önce ağdan, taze.
seriesarray
Geçmiş kullanım serisi için ayrılmıştır — bugün boş.
series[].tunix
Dilimin başlangıcı.
series[].rxbytes
Dilimde indirilen.
series[].txbytes
Dilimde yüklenen.
Örnek yanıt{
"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 arkasındaki trafik cüzdanları, tükenecekleri sırayla.
"Müşterimin ücretsiz trafiği varken ücretli trafiği neden azaldı?" sorusunu böyle yanıtlarsınız — sırada tükenecek olan queue_position 1'dir. live:false okuyamadığımız anlamına gelir; hiç olmamasıyla aynı şey değildir.
İstek
vpn_idstringzorunlu
Hesabın genel kimliği (vpn_…), ListVPN'den veya bir siparişin tesliminden.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/ListVPNBundles \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vpn_id":"vpn_6t2k9p"}'
Yanıt200 · application/json
bundlesarray
Cüzdanlar, tüketim sırasıyla.
bundles[].bundle_idstring
Cüzdanın kimliği.
bundles[].freebool
Satın alınmak yerine ücretsiz katman tarafından verilmiş.
bundles[].sourceenum
Cüzdanın nereden geldiği.
Şunlardan biri:buyextendmigratedfree_tier
bundles[].granted_bytesbytes
Verildiği andaki tam boyutu.
bundles[].remaining_bytesbytes
İçinde ne kaldığı.
bundles[].granted_atunix
Ne zaman verildiği.
bundles[].expires_atunix
Harcansın ya da harcanmasın ne zaman sona ereceği.
bundles[].daily_limit_bytesbytes
Kendi günlük üst sınırı. Yoksa = sınır yok.
bundles[].statusenum
Rakamla değil, yazıyla — böylece 2'nin tükenmiş demek olduğunu asla öğrenmek zorunda kalmazsınız.
Şunlardan biri:activedisabledexhausted
bundles[].queue_positionint
KULLANILABİLİR cüzdanlar üzerinde, tüketim sırasına göre 1 tabanlı — sırada tükenecek olan 1'dir. 0/yok, kuyruğun dışında demektir (harcanmış, süresi dolmuş veya devre dışı).
bundles[].plan_gbint
Satıldığı boyut, GB olarak.
bundles[].plan_daysint
Satıldığı geçerlilik süresi, gün olarak.
bundles[].invoice_idstring
Geldiği satın alma. Ücretsiz bir tahsiste yoktur.
livebool
Yok/false = hak katmanına ulaşılamadı; bu yüzden liste yanlış olmak yerine BOŞ. "Okuyamadık" ile "hiç yok" farklı cümlelerdir.
Örnek yanıt{
"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üşterinin uygulamasının içe aktardığı abonelik adresi. Bir VPN satışının teslim edilen ürünü budur.
İstek
vpn_idstringzorunlu
Hesabın genel kimliği (vpn_…), ListVPN'den veya bir siparişin tesliminden.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/GetSubscriptionLink \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vpn_id":"vpn_6t2k9p"}'
Yanıt200 · application/json
subscription_urlstring
Bunu müşterinizin uygulamasına verin — teslimatın tamamı budur.
tokenstring
Ham token — kendi QR kodunuzu veya uygulama içe aktarma bağlantılarınızı oluşturmak için.
Örnek yanıt{
"subscription_url": "https://sub.example.com/s/9f3kq8x2",
"token": "9f3kq8x2"
}
POST
SetVPNPassword
credentials
https://apiservice.vitamindata.net/api/v1/SetVPNPasswordBir hesabın şifresini değiştirir.
Ayrı credentials kapsamını gerektirir — manage bunu asla kapsamaz.
İstek
vpn_idstringzorunlu
Hesabın genel kimliği (vpn_…), ListVPN'den veya bir siparişin tesliminden.
new_passwordstringzorunlu
Ayarlanacak şifre.
credentialstringisteğe bağlı
Çok kimlik bilgili hesaplarda hangi kimlik bilgisi. Boş = birincil olan.
Örnek istekcurl 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":""}'
Yanıt200 · application/json
usernamestring
Değişikliğin uygulandığı kimlik bilgisi.
Örnek yanıt{"username": "u482913"}
https://apiservice.vitamindata.net/api/v1/SetVPNStateBir hesabı askıya alır veya devam ettirir.
İstek
vpn_idstringzorunlu
Hesabın genel kimliği (vpn_…), ListVPN'den veya bir siparişin tesliminden.
stateenumzorunlu
Ne yapılacağı.
Şunlardan biri:suspendresume
Örnek istekcurl 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"}'
Yanıt200 · application/json
statusenum
Hesabın vardığı durum.
Şunlardan biri:suspendedactive
Örnek yanıt{"status": "suspended"}
https://apiservice.vitamindata.net/api/v1/DeleteVPNBir hesabı siler. Geri alma ve iade yoktur.
İstek
vpn_idstringzorunlu
Hesabın genel kimliği (vpn_…), ListVPN'den veya bir siparişin tesliminden.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/DeleteVPN \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"vpn_id":"vpn_6t2k9p"}'
Yanıt200 · application/json
statusenum
Başarı durumunda her zaman deleted.
Şunlardan biri:deleted
Örnek yanıt{"status": "deleted"}
Sunucu satışı
Bir VPS satışı, VPN satışıyla aynı ödeme sözleşmesidir — yalnızca sepet farklıdır.
https://apiservice.vitamindata.net/api/v1/GetVPSStorefrontKonumlar, her birinde fiyatlanan planlar ve önyüklenebilir imajlar.
available:false olan bir düğümün kapasitesi kalmamıştır — gösterin, ama satışa sunmayın.
İstek
Parametre yok — boş bir nesne gönderin: {}.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/GetVPSStorefront \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{}'
Yanıt200 · application/json
nodesarray
Konumlar, her biri kendi fiyatlı planlarıyla.
nodes[].node_idstring
Sepetin node_id alanının aldığı değer.
nodes[].labelstring
Görünen ad (Frankfurt).
nodes[].regionstring
Gruplama için kaba bölge kodu.
nodes[].countrystring
Bayraklar için ISO ülke kodu.
nodes[].availablebool
Yok/false = kapasite kalmamış: gösterin, ama satışa sunmayın.
nodes[].plansarray
Burada satılabilenler, fiyatlarıyla.
nodes[].plans[].plan_codestring
Sepetin plan_code alanının aldığı değer.
nodes[].plans[].namestring
Görünen ad.
nodes[].plans[].vcpuint
Çekirdek sayısı.
nodes[].plans[].ram_mbint
MB olarak bellek.
nodes[].plans[].disk_gbint
GB olarak disk.
nodes[].plans[].traffic_bytesbytes
Dahil edilen aylık trafik.
nodes[].plans[].price_usd_monthmoney
BU DÜĞÜMDEKİ aylık fiyat — aynı plan başka yerde farklı fiyatlanabilir.
imagesarray
Önyüklenebilir veya kurulabilir her şey.
images[].shastring
İmajın TEK tanımlayıcısı — sepetler, yeniden kurulumlar ve ISO takma işlemlerinin hepsi bunu alır.
images[].namestring
İnsan tarafından okunur ad (Debian 13).
images[].kindenum
Bir disk imajı doğrudan kurulur; iso ise kendisinden önyüklediğiniz bir kurucudur.
Şunlardan biri:diskiso
images[].os_familyenum
Arayüzünüzdeki gruplama ve simgeler için.
Şunlardan biri:linuxwindowsmikrotik
images[].min_disk_gbint
Daha küçük bir diske yeniden kurulum reddedilir — önce diski büyütün.
months_minint
Yeni bir VM'in satın alınabileceği en kısa süre.
Örnek yanıt{
"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/ListVPSImagesÖnyükleyebileceğiniz veya kurabileceğiniz her imaj, sha ile.
Bir sepet, bir yeniden kurulum ve bir ISO takma işleminin hepsi bu sha'yı alır. Bir imajı başka hiçbir şey tanımlamaz.
İstek
Parametre yok — boş bir nesne gönderin: {}.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/ListVPSImages \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{}'
Yanıt200 · application/json
images[].shastring
İmajın TEK tanımlayıcısı — sepetler, yeniden kurulumlar ve ISO takma işlemlerinin hepsi bunu alır.
images[].namestring
İnsan tarafından okunur ad (Debian 13).
images[].kindenum
Bir disk imajı doğrudan kurulur; iso ise kendisinden önyüklediğiniz bir kurucudur.
Şunlardan biri:diskiso
images[].os_familyenum
Arayüzünüzdeki gruplama ve simgeler için.
Şunlardan biri:linuxwindowsmikrotik
images[].min_disk_gbint
Daha küçük bir diske yeniden kurulum reddedilir — önce diski büyütün.
Örnek yanıt{
"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 bir sunucunun fiyatı, kalem kalem.
İstek
cartobjectzorunlu
Fiyatlanacak sunucu.
cart.node_idstringzorunlu
VM'in nerede oluşturulacağı, mağazanın düğümlerinden.
cart.placementstringayrılmış — göndermeyin
Ayrılmıştır. Bu API'de sunucunun nerede oluşturulacağına her zaman node_id karar verir — onu gönderin ve düğümü mağazadan kendiniz seçin.
Şunlardan biri:auto
cart.plan_codestringzorunlu
Plan, seçilen düğümün kendi fiyat listesinden — planlar ve fiyatlar düğüme göre değişir.
cart.image_shastringzorunlu
Neyin önyükleneceği veya kurulacağı, sha ile. Disk imajları doğrudan kurulur; bir kurucu ISO ise takılı gelir ve VM ondan önyüklenecek şekilde ayarlanır.
cart.namestringzorunlu
VM'in ana bilgisayar adı / etiketi.
cart.monthsintzorunlu
Başlangıç süresi, mağazanın ay sınırları içinde.
cart.extra_disk_gbintisteğe bağlı
Planınkinin üzerine ek disk, GB olarak.
cart.extra_ipsintisteğe bağlı
Ek genel IPv4 adresleri.
cart.extra_traffic_tbmoneyisteğe bağlı
TB olarak ek aylık trafik, ondalık metin olarak ("0.5").
Örnek istekcurl 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"}}'
Yanıt200 · application/json
quoteobject
Kalem kalem fiyat. Hiçbir şey oluşturulmaz ve hiçbir şey tahsil edilmez.
quote.model_namestring
Hangi fiyatlandırma modelinin yanıtladığı.
quote.model_typestring
Modelin motor sürümü.
quote.base_usdmoney
İndirimler ve ek ücretler öncesi fiyat.
quote.total_usdmoney
Nihai fiyat — bu sepetle yapılan bir satışın tahsil edeceği tutar.
quote.linesarray
Kalem dökümü, işaretli; toplamı tam olarak nihai tutarı verir.
quote.lines[].codestring
Bu satırın ne olduğu (base, bir indirim kodu, bir ek ücret…).
quote.lines[].kindstring
Satırın kategorisi, arayüzünüzde gruplamak için.
quote.lines[].amount_usdmoney
İşaretli. İndirimler negatiftir; satırların toplamı tam olarak total_usd eder.
quote.lines[].pctstring
Varsa, satırın arkasındaki yüzde.
quote.cappedbool
Toplam, modelin üst sınırına takıldı.
quote.floor_appliedbool
Toplam, modelin taban fiyatına yükseltildi.
quote.clampedenum
Bir sepet değeri fiyatlamadan önce sınırların içine çekildiğinde ayarlanır.
Şunlardan biri:minmax
quote.invalidstring
Boş değilse sepet fiyatlanamıyor demektir — gösterin ve böyle bir teklifi ASLA tahsil etmeyin.
quote.metamap
Model ekstraları, metin→metin (ör. bir yükseltmenin remaining_days değeri).
Örnek yanıt{
"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/CreateVPSOrderBir sunucu satın alır ve kurar.
Teslim için GetOrder, ardından makine için GetVPS çağrısını yoklayın.
İstek
cartobjectzorunlu
Ne oluşturulacağı — QuoteVPS'in fiyatladığı biçimle aynı.
cart.node_idstringzorunlu
VM'in nerede oluşturulacağı, mağazanın düğümlerinden.
cart.placementstringayrılmış — göndermeyin
Ayrılmıştır. Bu API'de sunucunun nerede oluşturulacağına her zaman node_id karar verir — onu gönderin ve düğümü mağazadan kendiniz seçin.
Şunlardan biri:auto
cart.plan_codestringzorunlu
Plan, seçilen düğümün kendi fiyat listesinden — planlar ve fiyatlar düğüme göre değişir.
cart.image_shastringzorunlu
Neyin önyükleneceği veya kurulacağı, sha ile. Disk imajları doğrudan kurulur; bir kurucu ISO ise takılı gelir ve VM ondan önyüklenecek şekilde ayarlanır.
cart.namestringzorunlu
VM'in ana bilgisayar adı / etiketi.
cart.monthsintzorunlu
Başlangıç süresi, mağazanın ay sınırları içinde.
cart.extra_disk_gbintisteğe bağlı
Planınkinin üzerine ek disk, GB olarak.
cart.extra_ipsintisteğe bağlı
Ek genel IPv4 adresleri.
cart.extra_traffic_tbmoneyisteğe bağlı
TB olarak ek aylık trafik, ondalık metin olarak ("0.5").
fundingenumzorunlu
Nasıl ödeneceği — bkz. Ödeme yapmak. Varsayılan yoktur: atlanırsa istek reddedilir.
Şunlardan biri:FUNDING_AUTOFUNDING_BALANCEFUNDING_INVOICE
expected_total_usdmoneyisteğe bağlı
Onay güvencesi. Ayarlıysa ve güncel teklifimiz farklıysa, müşterinizin hiç görmediği bir tutarı tahsil etmek yerine satış price_changed ile reddedilir.
Örnek istekcurl 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"}'
Yanıt200 · application/json
orderobject
Sipariş — durumu delivered olana kadar GetOrder çağrısını yoklayın.
order.order_idstring
Siparişin genel kimliği (ord_…).
order.productenum
Ne satın alındığı.
Şunlardan biri:vpnvps
order.kindstring
Satın alma biçimi: new, extend, upgrade…
order.statusenum
Yaşam döngüsü. Hedef delivered'dır; needs_operator, paranın alındığı ve teslimi bir insanın tamamlamakta olduğu anlamına gelir — yeniden satın almayın; expired, faturanın ödenmeden süresinin dolduğu anlamına gelir.
Şunlardan biri:createdinvoicedpaiddeliveringdeliveredneeds_operatorfailedrefund_pendingrefundedexpired
order.fundingenum
Ödemeyi gerçekte hangi yolun karşıladığı. FUNDING_AUTO bunlardan birine çözümlenir.
Şunlardan biri:invoicebalance
order.total_usdmoney
Siparişin tahsil ettiği tutar.
order.invoice_idstring
Arkasındaki fatura — hangi yol öderse ödesin, her siparişin bir faturası vardır.
order.itemsint
Siparişin kaç hak oluşturduğu veya uzattığı.
order.created_atunix
Siparişin verildiği an.
order.delivered_atunix
Teslimin bittiği an. O ana kadar yoktur.
order.breakdownobject
Müşterinin onayladığı teklif, olduğu gibi — Quote'un döndürdüğüyle aynı biçim.
invoiceobject
Siparişin arkasındaki fatura: payment_required iken ödenebilir, completed iken zaten kapanmıştır.
invoice.invoice_idstring
Ödeme geçidinin fatura kimliği (inv_…).
invoice.statusenum
pending ödenebilir demektir. confirmed'dan delivered_redirected'a kadar her şey paranın geri dönülmez biçimde girdiği anlamına gelir — hepsini ÖDENDİ sayın. expired, bağlantının ödenmeden süresinin dolduğu anlamına gelir.
Şunlardan biri:pendingconfirmedsweepingsweptdeliveringdelivereddelivered_redirectedexpired
invoice.pay_urlstring
Barındırılan ödeme sayfası. Müşterinizi buraya gönderin; her ödeme yolu (koinler, zincirler, bakiye) bunun arkasındadır.
invoice.pay_telegram_urlstring
Aynı fatura, Telegram içinde ödenebilir hâlde: ödeme sağlayıcısının kendi botunu açar, bot tutarı gösterir ve ödemeyi orada alır. Uygulamadan çıkmak istemeyen müşteriler için pay_url ile birlikte sunun. Bulunmayabilir — yalnızca botu yapılandırılmış bir ödeme sağlayıcısında vardır, bu yüzden asla tek ödeme düğmeniz olmasın.
invoice.price_usdmoney
Faturanın tahsil ettiği tutar.
invoice.expires_atunix
Ödeme penceresinin kapandığı an.
paidbool
Para tahsil edildi. payment_required ile birlikte yoktur (= false).
statusenum
Dallanılacak ASIL alan — bkz. Ödeme yapmak.
Şunlardan biri:completedpayment_required
Örnek yanıt{
"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/QuoteVPSExtendBir sunucuyu yenilemenin maliyeti.
İstek
vps_idstringzorunlu
Sunucunun kimliği, ListVPS'ten.
monthsintzorunlu
Kaç ay ekleneceği. Mağazanın months_min…months_max değerleri arayüzünüzün sunması gerekenlerdir, ama bir yenileme bunların içine ÇEKİLMEZ — makul bir sayı gönderin, çünkü ne gönderirseniz fiyatlanan ve tahsil edilen o olur.
Örnek istekcurl 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}'
Yanıt200 · application/json
quoteobject
Kalem kalem fiyat. Hiçbir şey oluşturulmaz ve hiçbir şey tahsil edilmez.
quote.model_namestring
Hangi fiyatlandırma modelinin yanıtladığı.
quote.model_typestring
Modelin motor sürümü.
quote.base_usdmoney
İndirimler ve ek ücretler öncesi fiyat.
quote.total_usdmoney
Nihai fiyat — bu sepetle yapılan bir satışın tahsil edeceği tutar.
quote.linesarray
Kalem dökümü, işaretli; toplamı tam olarak nihai tutarı verir.
quote.lines[].codestring
Bu satırın ne olduğu (base, bir indirim kodu, bir ek ücret…).
quote.lines[].kindstring
Satırın kategorisi, arayüzünüzde gruplamak için.
quote.lines[].amount_usdmoney
İşaretli. İndirimler negatiftir; satırların toplamı tam olarak total_usd eder.
quote.lines[].pctstring
Varsa, satırın arkasındaki yüzde.
quote.cappedbool
Toplam, modelin üst sınırına takıldı.
quote.floor_appliedbool
Toplam, modelin taban fiyatına yükseltildi.
quote.clampedenum
Bir sepet değeri fiyatlamadan önce sınırların içine çekildiğinde ayarlanır.
Şunlardan biri:minmax
quote.invalidstring
Boş değilse sepet fiyatlanamıyor demektir — gösterin ve böyle bir teklifi ASLA tahsil etmeyin.
quote.metamap
Model ekstraları, metin→metin (ör. bir yükseltmenin remaining_days değeri).
Örnek yanıt{
"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/ExtendVPSBir sunucuyu yeniler.
Erken yenilemek ekstra maliyet getirmez: yeni bitiş tarihi bugünden değil, mevcut bitiş tarihinden ölçülür.
İstek
vps_idstringzorunlu
Sunucunun kimliği, ListVPS'ten.
monthsintzorunlu
Kaç ay ekleneceği. Mağazanın months_min…months_max değerleri arayüzünüzün sunması gerekenlerdir, ama bir yenileme bunların içine ÇEKİLMEZ — makul bir sayı gönderin, çünkü ne gönderirseniz fiyatlanan ve tahsil edilen o olur.
fundingenumzorunlu
Nasıl ödeneceği — bkz. Ödeme yapmak. Varsayılan yoktur: atlanırsa istek reddedilir.
Şunlardan biri:FUNDING_AUTOFUNDING_BALANCEFUNDING_INVOICE
expected_total_usdmoneyisteğe bağlı
Onay güvencesi. Ayarlıysa ve güncel teklifimiz farklıysa, müşterinizin hiç görmediği bir tutarı tahsil etmek yerine satış price_changed ile reddedilir.
Örnek istekcurl 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"}'
Yanıt200 · application/json
orderobject
Sipariş — durumu delivered olana kadar GetOrder çağrısını yoklayın.
order.order_idstring
Siparişin genel kimliği (ord_…).
order.productenum
Ne satın alındığı.
Şunlardan biri:vpnvps
order.kindstring
Satın alma biçimi: new, extend, upgrade…
order.statusenum
Yaşam döngüsü. Hedef delivered'dır; needs_operator, paranın alındığı ve teslimi bir insanın tamamlamakta olduğu anlamına gelir — yeniden satın almayın; expired, faturanın ödenmeden süresinin dolduğu anlamına gelir.
Şunlardan biri:createdinvoicedpaiddeliveringdeliveredneeds_operatorfailedrefund_pendingrefundedexpired
order.fundingenum
Ödemeyi gerçekte hangi yolun karşıladığı. FUNDING_AUTO bunlardan birine çözümlenir.
Şunlardan biri:invoicebalance
order.total_usdmoney
Siparişin tahsil ettiği tutar.
order.invoice_idstring
Arkasındaki fatura — hangi yol öderse ödesin, her siparişin bir faturası vardır.
order.itemsint
Siparişin kaç hak oluşturduğu veya uzattığı.
order.created_atunix
Siparişin verildiği an.
order.delivered_atunix
Teslimin bittiği an. O ana kadar yoktur.
order.breakdownobject
Müşterinin onayladığı teklif, olduğu gibi — Quote'un döndürdüğüyle aynı biçim.
invoiceobject
Siparişin arkasındaki fatura: payment_required iken ödenebilir, completed iken zaten kapanmıştır.
invoice.invoice_idstring
Ödeme geçidinin fatura kimliği (inv_…).
invoice.statusenum
pending ödenebilir demektir. confirmed'dan delivered_redirected'a kadar her şey paranın geri dönülmez biçimde girdiği anlamına gelir — hepsini ÖDENDİ sayın. expired, bağlantının ödenmeden süresinin dolduğu anlamına gelir.
Şunlardan biri:pendingconfirmedsweepingsweptdeliveringdelivereddelivered_redirectedexpired
invoice.pay_urlstring
Barındırılan ödeme sayfası. Müşterinizi buraya gönderin; her ödeme yolu (koinler, zincirler, bakiye) bunun arkasındadır.
invoice.pay_telegram_urlstring
Aynı fatura, Telegram içinde ödenebilir hâlde: ödeme sağlayıcısının kendi botunu açar, bot tutarı gösterir ve ödemeyi orada alır. Uygulamadan çıkmak istemeyen müşteriler için pay_url ile birlikte sunun. Bulunmayabilir — yalnızca botu yapılandırılmış bir ödeme sağlayıcısında vardır, bu yüzden asla tek ödeme düğmeniz olmasın.
invoice.price_usdmoney
Faturanın tahsil ettiği tutar.
invoice.expires_atunix
Ödeme penceresinin kapandığı an.
paidbool
Para tahsil edildi. payment_required ile birlikte yoktur (= false).
statusenum
Dallanılacak ASIL alan — bkz. Ödeme yapmak.
Şunlardan biri:completedpayment_required
Örnek yanıt{
"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 bir yapılandırmanın maliyeti, ödenmiş süreye oranlanmış olarak.
İstek
vps_idstringzorunlu
Sunucunun kimliği, ListVPS'ten.
specobjectzorunlu
HEDEF yapılandırma. Atlanan/sıfır alanlar mevcut değerini korur.
spec.vcpuintisteğe bağlı
Hedef çekirdek sayısı. 0 mevcut değeri korur.
spec.ram_mbintisteğe bağlı
MB olarak hedef bellek. 0 mevcut değeri korur.
spec.disk_gbintisteğe bağlı
GB olarak hedef disk. Disk yalnızca büyür — daha küçük bir değer reddedilir, çünkü işletim sistemi altındaki bir dosya sistemini küçültmek veri kaybı demektir.
Örnek istekcurl 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}}'
Yanıt200 · application/json
quoteobject
Kalem kalem fiyat. Hiçbir şey oluşturulmaz ve hiçbir şey tahsil edilmez.
quote.model_namestring
Hangi fiyatlandırma modelinin yanıtladığı.
quote.model_typestring
Modelin motor sürümü.
quote.base_usdmoney
İndirimler ve ek ücretler öncesi fiyat.
quote.total_usdmoney
Nihai fiyat — bu sepetle yapılan bir satışın tahsil edeceği tutar.
quote.linesarray
Kalem dökümü, işaretli; toplamı tam olarak nihai tutarı verir.
quote.lines[].codestring
Bu satırın ne olduğu (base, bir indirim kodu, bir ek ücret…).
quote.lines[].kindstring
Satırın kategorisi, arayüzünüzde gruplamak için.
quote.lines[].amount_usdmoney
İşaretli. İndirimler negatiftir; satırların toplamı tam olarak total_usd eder.
quote.lines[].pctstring
Varsa, satırın arkasındaki yüzde.
quote.cappedbool
Toplam, modelin üst sınırına takıldı.
quote.floor_appliedbool
Toplam, modelin taban fiyatına yükseltildi.
quote.clampedenum
Bir sepet değeri fiyatlamadan önce sınırların içine çekildiğinde ayarlanır.
Şunlardan biri:minmax
quote.invalidstring
Boş değilse sepet fiyatlanamıyor demektir — gösterin ve böyle bir teklifi ASLA tahsil etmeyin.
quote.metamap
Model ekstraları, metin→metin (ör. bir yükseltmenin remaining_days değeri).
restart_requiredbool
Bu yapılandırmayı uygulamak güç döngüsü gerektirir — müşteri bunu ödemeden ÖNCE öğrenmelidir.
monthly_before_usdmoney
Bugünkü dönemsel fiyat.
monthly_after_usdmoney
Yükseltme sonrası dönemsel fiyat — bundan böyle yenilemelerin maliyeti.
Örnek yanıt{
"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 bir yapılandırmanın ödemesini alır ve uygular. Disk yalnızca büyüyebilir.
İstek
vps_idstringzorunlu
Sunucunun kimliği, ListVPS'ten.
specobjectzorunlu
HEDEF yapılandırma — önce teklif alın; teklif yeniden başlatma konusunda da bilgi verir.
spec.vcpuintisteğe bağlı
Hedef çekirdek sayısı. 0 mevcut değeri korur.
spec.ram_mbintisteğe bağlı
MB olarak hedef bellek. 0 mevcut değeri korur.
spec.disk_gbintisteğe bağlı
GB olarak hedef disk. Disk yalnızca büyür — daha küçük bir değer reddedilir, çünkü işletim sistemi altındaki bir dosya sistemini küçültmek veri kaybı demektir.
fundingenumzorunlu
Nasıl ödeneceği — bkz. Ödeme yapmak. Varsayılan yoktur: atlanırsa istek reddedilir.
Şunlardan biri:FUNDING_AUTOFUNDING_BALANCEFUNDING_INVOICE
expected_total_usdmoneyisteğe bağlı
Onay güvencesi. Ayarlıysa ve güncel teklifimiz farklıysa, müşterinizin hiç görmediği bir tutarı tahsil etmek yerine satış price_changed ile reddedilir.
Örnek istekcurl 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"}'
Yanıt200 · application/json
orderobject
Sipariş — durumu delivered olana kadar GetOrder çağrısını yoklayın.
order.order_idstring
Siparişin genel kimliği (ord_…).
order.productenum
Ne satın alındığı.
Şunlardan biri:vpnvps
order.kindstring
Satın alma biçimi: new, extend, upgrade…
order.statusenum
Yaşam döngüsü. Hedef delivered'dır; needs_operator, paranın alındığı ve teslimi bir insanın tamamlamakta olduğu anlamına gelir — yeniden satın almayın; expired, faturanın ödenmeden süresinin dolduğu anlamına gelir.
Şunlardan biri:createdinvoicedpaiddeliveringdeliveredneeds_operatorfailedrefund_pendingrefundedexpired
order.fundingenum
Ödemeyi gerçekte hangi yolun karşıladığı. FUNDING_AUTO bunlardan birine çözümlenir.
Şunlardan biri:invoicebalance
order.total_usdmoney
Siparişin tahsil ettiği tutar.
order.invoice_idstring
Arkasındaki fatura — hangi yol öderse ödesin, her siparişin bir faturası vardır.
order.itemsint
Siparişin kaç hak oluşturduğu veya uzattığı.
order.created_atunix
Siparişin verildiği an.
order.delivered_atunix
Teslimin bittiği an. O ana kadar yoktur.
order.breakdownobject
Müşterinin onayladığı teklif, olduğu gibi — Quote'un döndürdüğüyle aynı biçim.
invoiceobject
Siparişin arkasındaki fatura: payment_required iken ödenebilir, completed iken zaten kapanmıştır.
invoice.invoice_idstring
Ödeme geçidinin fatura kimliği (inv_…).
invoice.statusenum
pending ödenebilir demektir. confirmed'dan delivered_redirected'a kadar her şey paranın geri dönülmez biçimde girdiği anlamına gelir — hepsini ÖDENDİ sayın. expired, bağlantının ödenmeden süresinin dolduğu anlamına gelir.
Şunlardan biri:pendingconfirmedsweepingsweptdeliveringdelivereddelivered_redirectedexpired
invoice.pay_urlstring
Barındırılan ödeme sayfası. Müşterinizi buraya gönderin; her ödeme yolu (koinler, zincirler, bakiye) bunun arkasındadır.
invoice.pay_telegram_urlstring
Aynı fatura, Telegram içinde ödenebilir hâlde: ödeme sağlayıcısının kendi botunu açar, bot tutarı gösterir ve ödemeyi orada alır. Uygulamadan çıkmak istemeyen müşteriler için pay_url ile birlikte sunun. Bulunmayabilir — yalnızca botu yapılandırılmış bir ödeme sağlayıcısında vardır, bu yüzden asla tek ödeme düğmeniz olmasın.
invoice.price_usdmoney
Faturanın tahsil ettiği tutar.
invoice.expires_atunix
Ödeme penceresinin kapandığı an.
paidbool
Para tahsil edildi. payment_required ile birlikte yoktur (= false).
statusenum
Dallanılacak ASIL alan — bkz. Ödeme yapmak.
Şunlardan biri:completedpayment_required
Örnek yanıt{
"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"
}
Sunucu yönetimi
Buradaki her fiil sunucuyu id ile alır — bu çağrılarda alanın adı gerçekten id'dir; para fiillerinin vps_id alanının aksine.
https://apiservice.vitamindata.net/api/v1/ListVPSMakineleriniz, güç durumu ve adresleriyle.
İstek
limitintisteğe bağlı
Sayfa boyutu. Varsayılan 50.
cursorcursoristeğe bağlı
Önceki yanıtın next_cursor değeri. İlk sayfa için atlayın.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/ListVPS \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"limit":50,"cursor":""}'
Yanıt200 · application/json
vps[].idstring
Sunucunun kimliği — her yönetim fiilinin id ve her para fiilinin vps_id alanının aldığı değer.
vps[].namestring
Ana bilgisayar adı / etiketi.
vps[].node_idstring
Nerede çalıştığı.
vps[].lifecycleenum
0 kuruluyor · 1 etkin · 2 askıda · 3 siliniyor · 4 silindi.
Şunlardan biri:01234
vps[].provisionedbool
Makine, barındırıldığı fiziksel sunucuda mevcut.
vps[].power_desiredenum
Gücün ne OLMASI gerektiği: 1 açık, 0/yok kapalı. Canlı durum GetVPSStats.running alanındadır.
Şunlardan biri:01
vps[].vcpuint
Çekirdek sayısı.
vps[].mem_mbint
MB olarak bellek.
vps[].disk_gbint
GB olarak disk.
vps[].image_shastring
Neyden önyüklendiği veya kurulduğu.
vps[].expires_atunix
Sunucunun sona erdiği an — bundan önce ExtendVPS ile yenileyin.
vps[].created_atunix
Oluşturulduğu an.
vps[].ipsarray
Genel (public) adresleri.
vps[].private_ipstring
Planında varsa, özel (private) adresi.
next_cursorcursor
Sonraki sayfa için cursor olarak geri gönderin. Yok/boş = her şey elinizde.
Örnek yanıt{
"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 makinenin ayrıntıları.
İstek
idstringzorunlu
Sunucunun kimliği, ListVPS'ten. Yönetim fiillerinde alanın adı id'dir — yalnızca para fiilleri vps_id yazar.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/GetVPS \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n"}'
Yanıt200 · application/json
vps.idstring
Sunucunun kimliği — her yönetim fiilinin id ve her para fiilinin vps_id alanının aldığı değer.
vps.namestring
Ana bilgisayar adı / etiketi.
vps.node_idstring
Nerede çalıştığı.
vps.lifecycleenum
0 kuruluyor · 1 etkin · 2 askıda · 3 siliniyor · 4 silindi.
Şunlardan biri:01234
vps.provisionedbool
Makine, barındırıldığı fiziksel sunucuda mevcut.
vps.power_desiredenum
Gücün ne OLMASI gerektiği: 1 açık, 0/yok kapalı. Canlı durum GetVPSStats.running alanındadır.
Şunlardan biri:01
vps.vcpuint
Çekirdek sayısı.
vps.mem_mbint
MB olarak bellek.
vps.disk_gbint
GB olarak disk.
vps.image_shastring
Neyden önyüklendiği veya kurulduğu.
vps.expires_atunix
Sunucunun sona erdiği an — bundan önce ExtendVPS ile yenileyin.
vps.created_atunix
Oluşturulduğu an.
vps.ipsarray
Genel (public) adresleri.
vps.private_ipstring
Planında varsa, özel (private) adresi.
livebool
Az önce katmandan okundu.
Örnek yanıt{
"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, bellek, disk ve ağ.
İstek
idstringzorunlu
Sunucunun kimliği, ListVPS'ten. Yönetim fiillerinde alanın adı id'dir — yalnızca para fiilleri vps_id yazar.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/GetVPSStats \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n"}'
Yanıt200 · application/json
cpu_pctint
CPU yükü, yüzde.
mem_used_mbint
Kullanılan bellek, MB.
disk_used_mbint
Kullanılan disk, MB.
rx_bpsint64
Gelen, bit/saniye.
tx_bpsint64
Giden, bit/saniye.
runningbool
Makine şu anda açık.
updated_atunix
Bu rakamların örneklendiği an.
Örnek yanıt{
"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/GetVPSUsageMakinenin hakkından kullanılan trafik, paket paket.
İstek
idstringzorunlu
Sunucunun kimliği, ListVPS'ten. Yönetim fiillerinde alanın adı id'dir — yalnızca para fiilleri vps_id yazar.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/GetVPSUsage \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n"}'
Yanıt200 · application/json
total_downbytes
Ömür boyu indirme.
total_upbytes
Ömür boyu yükleme.
bundlesarray
Trafik paketleri; şu anda tükenmekte olanı current işaretler.
bundles[].idint64
Trafik paketinin işlem katmanındaki kimliği.
bundles[].modeint
Katmanın muhasebe modu kodu. Opak kabul edin.
bundles[].bytes_totalbytes
Paketin toplam hakkı.
bundles[].used_dlbytes
Bu paketten indirilen.
bundles[].used_upbytes
Bu paketten yüklenen.
bundles[].stateint
Katmanın durum kodu. Opak kabul edin.
bundles[].currentbool
Şu anda tükenmekte olan paket budur.
bundles[].expires_atunix
Paketin sona erdiği an.
Örnek yanıt{
"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/VPSPowerGüç kontrolü.
shutdown işletim sistemine sorar; force_stop fişi çeker. İlkini tercih edin.
İstek
idstringzorunlu
Sunucunun kimliği, ListVPS'ten. Yönetim fiillerinde alanın adı id'dir — yalnızca para fiilleri vps_id yazar.
actionenumzorunlu
shutdown/reboot nazik (graceful) yöntemlerdir; reset/force_stop güç düğmesidir.
Şunlardan biri:startshutdownrebootresetforce_stop
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/VPSPower \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n","action":"reboot"}'
Yanıt200 · application/json
okbool
Katman eylemi kabul etti. Makinenin gerçek durumu için GetVPSStats izleyin.
https://apiservice.vitamindata.net/api/v1/ReinstallVPSDiski siler ve yeni bir imaj kurar.
Yıkıcıdır ve yeniden denemek GÜVENLİ DEĞİLDİR — bir çağrı, bir yeniden kurulum. İmaj mevcut diske sığmalıdır; sığmıyorsa önce diski büyütün.
İstek
idstringzorunlu
Sunucunun kimliği, ListVPS'ten. Yönetim fiillerinde alanın adı id'dir — yalnızca para fiilleri vps_id yazar.
image_shastringzorunlu
İmaj, ListVPSImages'tan gelen sha ile. Bir imajı başka hiçbir şey adlandırmaz ve sunulmayan bir sha reddedilir.
reset_rootboolisteğe bağlı
Ayrıca yeni bir root şifresi de üretir.
Örnek istekcurl 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}'
Yanıt200 · application/json
okbool
Katman eylemi kabul etti. Makinenin gerçek durumu için GetVPSStats izleyin.
https://apiservice.vitamindata.net/api/v1/AttachVPSISOBir kurulum ISO'su takar. Ondan önyüklemek için önyükleme sırasını 1 yapın.
İstek
idstringzorunlu
Sunucunun kimliği, ListVPS'ten. Yönetim fiillerinde alanın adı id'dir — yalnızca para fiilleri vps_id yazar.
image_shastringzorunlu
İmaj, ListVPSImages'tan gelen sha ile. Bir imajı başka hiçbir şey adlandırmaz ve sunulmayan bir sha reddedilir.
Örnek istekcurl 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"}'
Yanıt200 · application/json
okbool
Katman eylemi kabul etti. Makinenin gerçek durumu için GetVPSStats izleyin.
https://apiservice.vitamindata.net/api/v1/DetachVPSISOISO'yu kaldırır ve diskten önyüklemeye döner.
İstek
idstringzorunlu
Sunucunun kimliği, ListVPS'ten. Yönetim fiillerinde alanın adı id'dir — yalnızca para fiilleri vps_id yazar.
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/DetachVPSISO \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n"}'
Yanıt200 · application/json
okbool
Katman eylemi kabul etti. Makinenin gerçek durumu için GetVPSStats izleyin.
POST
SetVPSBootOrder
manage
https://apiservice.vitamindata.net/api/v1/SetVPSBootOrderHangi aygıtın önce önyükleneceği.
İstek
idstringzorunlu
Sunucunun kimliği, ListVPS'ten. Yönetim fiillerinde alanın adı id'dir — yalnızca para fiilleri vps_id yazar.
orderenumzorunlu
0 önce disk, 1 önce CD-ROM.
Şunlardan biri:01
Örnek istekcurl https://apiservice.vitamindata.net/api/v1/SetVPSBootOrder \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"vm_7q3k1n","order":1}'
Yanıt200 · application/json
okbool
Katman eylemi kabul etti. Makinenin gerçek durumu için GetVPSStats izleyin.