Hızlı başlangıç
/meAPI 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 --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"}'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.
{
"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.
{ "status": "successful" }{
"status": "error",
"message": "Hata açıklaması"
}| Mesaj | Anlamı |
|---|---|
Please define the api key | İstekte key alanı bulunmuyor. |
Invalid or Incorrect API Key | API anahtarı geçersiz. |
Your account is not active | Bayi hesabı aktif değil. |
This service is disabled | Bayi 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.
- Önce
/order/listveya/order/detailile işlemin oluşup oluşmadığını kontrol edin. - İşlem bulunmuyorsa kontrollü biçimde yeniden deneyin.
order_idveinvoice_iddeğerlerini kendi sisteminizde saklayın.
Hesap ve bakiye
/meBayi hesabının kullanılabilir bakiyesini ve para birimini döndürür.
{
"status": "successful",
"balance": 1500.75,
"currency": "TRY",
"balance_formatted": "₺1.500,75"
}Ürün kataloğu
/productsBayinin 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.
{
"key": "BAYI_API_ANAHTARINIZ",
"types": ["domain", "hosting"],
"type_ids": []
}Alan adı uygunluk sorgusu
/domain-availability-checkBir alan adı gövdesini bir veya daha fazla uzantı için sorgular.
{
"key": "BAYI_API_ANAHTARINIZ",
"sld": "ornekmarka",
"tlds": ["com", "net", "org"]
}{
"status": "successful",
"data": {
"ornekmarka.com": {"status": "available", "premium": false},
"ornekmarka.net": {"status": "unavailable", "premium": false}
}
}Tescil ve transfer
/buyTescil 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.
{
"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ı | Zorunlu | Açıklama |
|---|---|---|
FirstName / LastName | Evet | Ad ve soyad |
EMail | Evet | Geçerli e-posta adresi |
PhoneCountryCode / Phone | Evet | Ülke kodu ve telefon, yalnız rakam |
AddressLine1 / City / State / ZipCode | Evet | Adres bilgileri |
Country | Evet | İki harfli ISO kodu; ör. TR |
Sipariş listesi
/order/listHesaba ait hizmetleri döndürür. Alan adlarını product_type === "domain", hosting hesaplarını product_type === "hosting" ile filtreleyin.
{ "key": "BAYI_API_ANAHTARINIZ" }Sipariş ve alan adı detayı
/order/detailSipariş 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.
{
"key": "BAYI_API_ANAHTARINIZ",
"id": 4651
}status alanı API işlem sonucunu değil, siparişin durumunu ifade eder.Alan adı yenileme
/order/renewalAktif alan adını belirtilen süre kadar yeniler ve bayi bakiyesinden tahsilat oluşturur.
{
"key": "BAYI_API_ANAHTARINIZ",
"id": 4651,
"period_type": "year",
"period_duration": 1
}Alan adı yönetim işlemleri
/order/transactionTek bir uç nokta üzerinden nameserver, WHOIS, transfer kilidi, EPP kodu ve WHOIS gizliliği işlemleri yapılır.
| İşlem | action değeri | Ek veri |
|---|---|---|
| Nameserver değiştir | modify-nameservers | nameservers[] |
| WHOIS değiştir | modify-whois | whois |
| Transfer kilidi | modify-transferlock | status |
| EPP kodu al | get-auth-code | — |
| WHOIS gizliliği | modify-whois-privacy | status |
| WHOIS gizliliği satın al | purchase-whois-privacy | — |
{
"key": "BAYI_API_ANAHTARINIZ",
"id": 4651,
"action": "modify-nameservers",
"nameservers": ["ns1.example.net", "ns2.example.net"]
}Web hosting paketleri
/productsSatışa açık hosting paketlerini, dönem seçeneklerini, bayi fiyatlarını ve tanımlı kaynak limitlerini listeler.
{
"key": "BAYI_API_ANAHTARINIZ",
"types": ["hosting"],
"type_ids": []
}| Yanıt alanı | Açıklama |
|---|---|
id | Sipariş verirken kullanılacak sayısal ürün kimliği. |
category_id / category_name | Hosting ürün grubunun kimliği ve adı. |
pricing | Dönem, süre, fiyat, para birimi ve fiyat kimliği seçenekleri. |
disk_limit / bandwidth_limit | Pakette tanımlı disk ve trafik limitleri. |
email_limit / database_limit / ftp_limit | Hesap kaynak limitleri; pakette tanımlıysa döner. |
cpu_limit | Hosting paketinin CPU sınırı; tanımlıysa döner. |
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
/buySeç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.
{
"key": "BAYI_API_ANAHTARINIZ",
"type": "hosting",
"id": 31,
"period_type": "month",
"period_duration": 1,
"options": {
"domain": "ornekmarka.com"
}
}{
"status": "successful",
"invoice_id": 8125,
"order_id": 4652,
"order_status": "active",
"fee": 1200.00,
"fee_formatted": "₺1.200,00"
}/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:
"options": { "domain": "ornekmarka.com", "requirements": { "12": 34 } }
/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ı
/order/detailSipariş durumunu, dönemini, alan adını, paket limitlerini ve modül destekliyorsa disk/trafik kullanımını döndürür.
{
"key": "BAYI_API_ANAHTARINIZ",
"id": 4652
}| Yanıt alanı | Açıklama |
|---|---|
status | Hosting sipariş durumu; ör. active veya pending. |
domain / hostname / ip | Hesaba atanmış adres bilgileri; mevcutsa döner. |
features | Disk, trafik, e-posta, veritabanı, FTP ve CPU limitleri. |
usage | Sunucu modülü destekliyorsa güncel disk ve trafik kullanımı. |
login | Oluş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
/order/renewalHosting hesabını seçilen paket dönemine göre yeniler ve bayi bakiyesinden tahsilat yapar.
{
"key": "BAYI_API_ANAHTARINIZ",
"id": 4652,
"period_type": "month",
"period_duration": 1
}Hosting paketi yükseltme
/order/upgradeAktif 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.
{
"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
/order/cancelAktif hosting hesabı için hemen veya dönem sonunda iptal talebi oluşturur.
{
"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
/order/transactionBağlı sunucu modülü destekliyorsa aktif hosting hesabının parolasını değiştirir.
{
"key": "BAYI_API_ANAHTARINIZ",
"id": 4652,
"action": "change-password",
"password": "Guclu-Bir-Parola!2026"
}İstemci örnekleri
#PHP
<?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
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_idveinvoice_ideş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.