Güvenli ve ölçeklenebilir hosting altyapısı Satış ve Destek
Hosting paketlerinde uzman site taşıma desteğiPaketleri İncele
GELİŞTİRİCİ PLATFORMU · API v1.1

Nodex Bayi API

Alan adı ve web hosting ürünlerini listeleyin; sipariş, yenileme, yükseltme ve yönetim işlemlerini kendi panelinize veya otomasyonunuza güvenli biçimde entegre edin.

Doküman sürümüv1.1
Veri biçimiJSON
KapsamAlan adı ve web hosting

Hızlı başlangıç

POST/me
#

API erişimi için aktif Nodex müşteri ve bayi hesabı, etkin bayi API yetkisi, geçerli bir API anahtarı ve ücretli işlemler için yeterli bakiye gerekir. Tüm istekler POST yöntemiyle JSON olarak gönderilir.

cURL · bağlantı testi
curl --request POST \
  --url "https://cloud.nodex.com.tr/hosting/api/reseller/me" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{"key":"BAYI_API_ANAHTARINIZ"}'
Canlı ortam: Tescil, transfer, yenileme ve ücretli WHOIS gizliliği işlemleri bayi bakiyesinden tahsilat oluşturabilir.

Kimlik doğrulama

#

API anahtarı her isteğin JSON gövdesindeki key alanında gönderilir. Anahtarı URL parametresine, tarayıcı koduna veya herkese açık kaynak depolarına koymayın; çağrıları sunucu tarafında yapın.

JSON · ortak istek gövdesi
{
  "key": "BAYI_API_ANAHTARINIZ"
}

Yanıt ve hata yönetimi

#

Yalnız HTTP durum koduna güvenmeyin. JSON yanıtındaki status alanını ve hata durumunda message değerini mutlaka değerlendirin.

JSON · başarılı yanıt
{ "status": "successful" }
JSON · hata yanıtı
{
  "status": "error",
  "message": "Hata açıklaması"
}
MesajAnlamı
Please define the api keyİstekte key alanı bulunmuyor.
Invalid or Incorrect API KeyAPI anahtarı geçersiz.
Your account is not activeBayi hesabı aktif değil.
This service is disabledBayi API hizmeti kapalı.

Güvenli tekrar ve zaman aşımı

#

API, ücretli işlemlerde istemciye ait bir idempotency anahtarı kabul etmez. Zaman aşımı yaşanan /buy veya /order/renewal isteğini doğrudan tekrarlamayın.

  1. Önce /order/list veya /order/detail ile işlemin oluşup oluşmadığını kontrol edin.
  2. İşlem bulunmuyorsa kontrollü biçimde yeniden deneyin.
  3. order_id ve invoice_id değerlerini kendi sisteminizde saklayın.

Hesap ve bakiye

POST/me
#

Bayi hesabının kullanılabilir bakiyesini ve para birimini döndürür.

JSON · yanıt 200
{
  "status": "successful",
  "balance": 1500.75,
  "currency": "TRY",
  "balance_formatted": "₺1.500,75"
}

Ürün kataloğu

POST/products
#

Bayinin satın alabildiği alan adı ve web hosting ürünlerini, dönemleri, özellikleri ve bayi fiyatlarıyla listeler. Yalnız ihtiyaç duyduğunuz türleri types dizisinde gönderin.

JSON · istek
{
  "key": "BAYI_API_ANAHTARINIZ",
  "types": ["domain", "hosting"],
  "type_ids": []
}
Fiyatları düzenli aralıklarla yenileyin; sipariş anında eski önbellek fiyatına güvenmeyin.

Alan adı uygunluk sorgusu

POST/domain-availability-check
#

Bir alan adı gövdesini bir veya daha fazla uzantı için sorgular.

JSON · istek
{
  "key": "BAYI_API_ANAHTARINIZ",
  "sld": "ornekmarka",
  "tlds": ["com", "net", "org"]
}
JSON · yanıt
{
  "status": "successful",
  "data": {
    "ornekmarka.com": {"status": "available", "premium": false},
    "ornekmarka.net": {"status": "unavailable", "premium": false}
  }
}

Tescil ve transfer

POST/buy
#

Tescil ve transfer aynı uç noktayı kullanır. Transferde options.transfer değerini true yapın ve epp_code gönderin. WHOIS nesnesi registrant, administrative, technical ve billing kişilerini içermelidir.

JSON · kısaltılmış tescil isteği
{
  "key": "BAYI_API_ANAHTARINIZ",
  "type": "domain",
  "id": "com",
  "period_type": "year",
  "period_duration": 1,
  "options": {
    "transfer": false,
    "domain": "ornekmarka.com",
    "nameservers": ["ns1.example.net", "ns2.example.net"],
    "whois_privacy": false,
    "whois": { "registrant": { "FirstName": "Ali", "LastName": "Yılmaz" } }
  }
}
WHOIS alanıZorunluAçıklama
FirstName / LastNameEvetAd ve soyad
EMailEvetGeçerli e-posta adresi
PhoneCountryCode / PhoneEvetÜlke kodu ve telefon, yalnız rakam
AddressLine1 / City / State / ZipCodeEvetAdres bilgileri
CountryEvetİki harfli ISO kodu; ör. TR

Sipariş listesi

POST/order/list
#

Hesaba ait hizmetleri döndürür. Alan adlarını product_type === "domain", hosting hesaplarını product_type === "hosting" ile filtreleyin.

JSON · istek
{ "key": "BAYI_API_ANAHTARINIZ" }

Sipariş ve alan adı detayı

POST/order/detail
#

Sipariş kimliğine göre alan adı durumunu, bitiş tarihini, nameserver ve kayıt operatörünün sağladığı yönetim bilgilerini döndürür.

JSON · istek
{
  "key": "BAYI_API_ANAHTARINIZ",
  "id": 4651
}
Bu uç noktadaki status alanı API işlem sonucunu değil, siparişin durumunu ifade eder.

Alan adı yenileme

POST/order/renewal
#

Aktif alan adını belirtilen süre kadar yeniler ve bayi bakiyesinden tahsilat oluşturur.

JSON · istek
{
  "key": "BAYI_API_ANAHTARINIZ",
  "id": 4651,
  "period_type": "year",
  "period_duration": 1
}

Alan adı yönetim işlemleri

POST/order/transaction
#

Tek bir uç nokta üzerinden nameserver, WHOIS, transfer kilidi, EPP kodu ve WHOIS gizliliği işlemleri yapılır.

İşlemaction değeriEk veri
Nameserver değiştirmodify-nameserversnameservers[]
WHOIS değiştirmodify-whoiswhois
Transfer kilidimodify-transferlockstatus
EPP kodu alget-auth-code
WHOIS gizliliğimodify-whois-privacystatus
WHOIS gizliliği satın alpurchase-whois-privacy
JSON · nameserver değiştirme
{
  "key": "BAYI_API_ANAHTARINIZ",
  "id": 4651,
  "action": "modify-nameservers",
  "nameservers": ["ns1.example.net", "ns2.example.net"]
}
Kayıt operatörüne bağlı olarak glue record, DNSSEC, DNS kaydı ve yönlendirme gibi ek işlemler desteklenebilir. Kullanılabilirliği üretimde otomatik varsaymayın.

Web hosting paketleri

POST/products
#

Satışa açık hosting paketlerini, dönem seçeneklerini, bayi fiyatlarını ve tanımlı kaynak limitlerini listeler.

JSON · istek
{
  "key": "BAYI_API_ANAHTARINIZ",
  "types": ["hosting"],
  "type_ids": []
}
Yanıt alanıAçıklama
idSipariş verirken kullanılacak sayısal ürün kimliği.
category_id / category_nameHosting ürün grubunun kimliği ve adı.
pricingDönem, süre, fiyat, para birimi ve fiyat kimliği seçenekleri.
disk_limit / bandwidth_limitPakette tanımlı disk ve trafik limitleri.
email_limit / database_limit / ftp_limitHesap kaynak limitleri; pakette tanımlıysa döner.
cpu_limitHosting paketinin CPU sınırı; tanımlıysa döner.
İstemci, pricing nesnesinin anahtarına güvenmemeli; seçimi her fiyat kaydındaki period ve period_duration alanlarına göre yapmalıdır.

Web hosting siparişi

POST/buy
#

Seçilen hosting paketini bayi bakiyesiyle satın alır. id, ürün kataloğundan alınan hosting ürün kimliğidir; dönem paketin pricing seçeneklerinden biriyle birebir eşleşmelidir.

JSON · hosting siparişi
{
  "key": "BAYI_API_ANAHTARINIZ",
  "type": "hosting",
  "id": 31,
  "period_type": "month",
  "period_duration": 1,
  "options": {
    "domain": "ornekmarka.com"
  }
}
JSON · başarılı yanıt
{
  "status": "successful",
  "invoice_id": 8125,
  "order_id": 4652,
  "order_status": "active",
  "fee": 1200.00,
  "fee_formatted": "₺1.200,00"
}
Bu çağrı tahsilat ve gerçek hosting siparişi oluşturur. Zaman aşımında aynı isteği doğrudan tekrarlamadan önce /order/list ile sonucu kontrol edin.

Ürüne özel gereksinimler

Paketiniz sipariş formu seçeneği gerektiriyorsa değerleri options.requirements nesnesinde, gereksinim kimliğini anahtar olarak gönderin:

JSON · options örneği
"options": {
  "domain": "ornekmarka.com",
  "requirements": { "12": 34 }
}
Standart /products yanıtı ürün gereksinim kimliklerini listelemez. Gereksinim kullanan paketlerde bu kimlik ve seçenekleri bayilere ayrıca sağlamanız veya özel bir katalog uç noktası geliştirmeniz gerekir.

Hosting hesap detayı

POST/order/detail
#

Sipariş durumunu, dönemini, alan adını, paket limitlerini ve modül destekliyorsa disk/trafik kullanımını döndürür.

JSON · istek
{
  "key": "BAYI_API_ANAHTARINIZ",
  "id": 4652
}
Yanıt alanıAçıklama
statusHosting sipariş durumu; ör. active veya pending.
domain / hostname / ipHesaba atanmış adres bilgileri; mevcutsa döner.
featuresDisk, trafik, e-posta, veritabanı, FTP ve CPU limitleri.
usageSunucu modülü destekliyorsa güncel disk ve trafik kullanımı.
loginOluşturulmuşsa hosting kullanıcı adı ve parolası.
login.password hassas veridir. Yanıtı loglamayın, istemci tarayıcısına gereksiz yere göndermeyin ve kalıcı olarak düz metin saklamayın.

Hosting yenileme

POST/order/renewal
#

Hosting hesabını seçilen paket dönemine göre yeniler ve bayi bakiyesinden tahsilat yapar.

JSON · istek
{
  "key": "BAYI_API_ANAHTARINIZ",
  "id": 4652,
  "period_type": "month",
  "period_duration": 1
}

Hosting paketi yükseltme

POST/order/upgrade
#

Aktif hosting hesabını aynı ürün türündeki uygun başka bir pakete yükseltir. İşlem yalnız Nodex tarafında hosting yükseltmeleri etkinse ve hedef paket/dönem yükseltilebilir durumdaysa çalışır.

JSON · istek
{
  "key": "BAYI_API_ANAHTARINIZ",
  "id": 4652,
  "upgrade_product_type": "hosting",
  "upgrade_product_id": 32,
  "upgrade_product_period_type": "month",
  "upgrade_product_period_duration": 1
}

Hosting iptal talebi

POST/order/cancel
#

Aktif hosting hesabı için hemen veya dönem sonunda iptal talebi oluşturur.

JSON · istek
{
  "key": "BAYI_API_ANAHTARINIZ",
  "id": 4652,
  "urgency": "period-ending",
  "reason": "Müşteri talebi"
}

urgency yalnız now veya period-ending değerini kabul eder.

Hosting parolası değiştirme

POST/order/transaction
#

Bağlı sunucu modülü destekliyorsa aktif hosting hesabının parolasını değiştirir.

JSON · istek
{
  "key": "BAYI_API_ANAHTARINIZ",
  "id": 4652,
  "action": "change-password",
  "password": "Guclu-Bir-Parola!2026"
}
Parola politikası bağlı hosting modülüne göre değişebilir. Modül desteklemiyorsa işlem hata döndürür.

İstemci örnekleri

#

PHP

PHP · ortak istemci
<?php
function nodexApi(string $endpoint, array $payload): array {
  $url = 'https://cloud.nodex.com.tr/hosting/api/reseller/' . ltrim($endpoint, '/');
  $ch = curl_init($url);
  curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Accept: application/json', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_TIMEOUT => 30,
  ]);
  $body = curl_exec($ch);
  if ($body === false) throw new RuntimeException(curl_error($ch));
  $data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
  if (($data['status'] ?? null) === 'error') throw new RuntimeException($data['message'] ?? 'API hatası');
  return $data;
}

$account = nodexApi('me', ['key' => getenv('NODEX_API_KEY')]);

Node.js

JavaScript · fetch
async function nodexApi(endpoint, payload) {
  const response = await fetch(`https://cloud.nodex.com.tr/hosting/api/reseller/${endpoint}`, {
    method: 'POST',
    headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },
    body: JSON.stringify(payload)
  });
  const data = await response.json();
  if (data.status === 'error') throw new Error(data.message || 'API hatası');
  return data;
}

const account = await nodexApi('me', { key: process.env.NODEX_API_KEY });

Entegrasyon kontrol listesi

#
  • API anahtarını yalnız sunucu tarafında, gizli değişken olarak saklayın.
  • API anahtarı, EPP kodu ve WHOIS verilerini günlüklerde maskeleyin.
  • Ücretli işlemlerden önce alan adı, dönem, fiyat ve bakiyeyi doğrulayın.
  • Zaman aşımında ücretli isteği körlemesine tekrarlamayın.
  • order_id ve invoice_id eşleşmelerini kalıcı olarak saklayın.
  • İlk canlı tescili düşük riskli bir test alan adıyla ve insan kontrolünde yapın.

Teknik destek ve API erişim talepleri için müşteri panelinden destek kaydı oluşturabilirsiniz.