Giriş
Netlen Cloud API, sunucularınızı programatik olarak yönetmenizi sağlar. RESTful mimari ile tasarlanmış API, JSON formatında veri alışverişi yapar.
https://api.netlen.com.tr/v1v1.0.7 (OpenAPI 3.0.3)Test (Sandbox) API: Gerçek işlem yapmadan entegrasyon testi için Test/Sandbox dokümantasyonu ve test anahtarı oluşturma, müşteri panelinizdeki API Dokümanları sayfasında yer alır.
Kimlik Doğrulama
Tüm API isteklerinde X-API-Key header'ı kullanılmalıdır. API anahtarınızı Netlen Cloud panelinizden alabilirsiniz.
Örnek
curl -X GET "https://api.netlen.com.tr/v1/servers" \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json"
Hızlı Başlangıç
API'yi kullanmaya başlamak için önce bir API anahtarı almanız gerekir. Ardından bu anahtarı tüm isteklerinizde X-API-Key header'ı olarak göndermeniz gerekir.
İlk İsteğinizi Yapın
Sunucularınızı listelemek için aşağıdaki komutu kullanın:
curl -X GET "https://api.netlen.com.tr/v1/servers" \ -H "X-API-Key: YOUR_API_KEY"
Sunucu Oluşturun
Yeni bir sunucu oluşturmak için POST isteği gönderin:
curl -X POST "https://api.netlen.com.tr/v1/servers" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"package_id": 1,
"version_id": 1,
"location_id": 1,
"server_name": "my-server"
}'WHMCS Modülü
WHMCS entegrasyonu ile müşterilerinize otomatik sunucu sağlama imkanı sunun.
Gereksinimler
- WHMCS 8.x
- PHP 8.1 veya üzeri
- ionCube Loader 13 veya üzeri
- cURL desteği
- Netlen Cloud API anahtarı
Modülü İndir
Resmi WHMCS modülünü indirin ve kurulum talimatlarını takip edin.
WHMCS Modülünü İndir (Sanal Sunucu)Kurulum
Dosyaları Çıkartın
ZIP dosyasını WHMCS kök dizinine çıkartın. Modül otomatik olarak doğru klasörlere yerleşecektir.
API Anahtarı Alın
Netlen Cloud panelinden Bayi → API menüsüne gidin ve yeni bir API anahtarı oluşturun. WHMCS sunucunuzun IP adresini izin verilen IP'lere ekleyin.
WHMCS'de Sunucu Ekleyin
Setup → Products/Services → Servers menüsüne gidin, yeni sunucu ekleyin ve modül olarak Netlen Cloud'u seçin.
Addon Modülü Aktifleştirin
Setup → Addon Modules menüsünden Netlen Cloud modülünü bulun ve aktifleştirin.
Hata Kodları
API, standart HTTP durum kodları ve detaylı hata mesajları döndürür.
| Code | Name | Açıklama |
|---|---|---|
400 | Bad Request | Geçersiz istek parametreleri |
401 | Unauthorized | Geçersiz API anahtarı veya IP izin listesinde değil |
403 | Forbidden | Bu işlem için yetkiniz yok |
404 | Not Found | İstenen kaynak bulunamadı |
422 | Unprocessable Entity | Doğrulama hatası |
429 | Too Many Requests | Rate limit aşıldı |
500 | Internal Server Error | Sunucu hatası |
Hata Yanıtı Örneği
{
"success": false,
"error": {
"code": "INVALID_API_KEY",
"message": "Invalid API key",
"details": {}
}
}API Referansı
Kaynaklar
Sunucu oluşturma için gerekli kaynaklar
/packagesSunucu Paketlerini Listele
Mevcut sunucu paketlerini listeler. Bayi statüsüne sahip müşteriler için indirimli fiyatlar da gösterilir.
Parametreler
pageintegerlimitinteger{
"success": true,
"data": [
{
"id": 1,
"name": "Basic Plan",
"cpu_cores": 2,
"ram_mb": 2048,
"storage_gb": 50,
"bandwidth_gb": 1000,
"monthly_price": 29.99,
"reseller_monthly_price": 25.49,
"reseller_discount_percentage": 15
}
],
"pagination": {
"current_page": 1,
"total": 10,
"total_pages": 1
}
}/operating-systemsİşletim Sistemlerini Listele
Kullanılabilir işletim sistemlerini ve versiyonlarını listeler.
{
"success": true,
"data": [
{
"id": 1,
"name": "Ubuntu",
"versions": [
{
"id": 1,
"name": "Ubuntu 22.04 LTS"
},
{
"id": 2,
"name": "Ubuntu 20.04 LTS"
}
]
}
]
}/locationsLokasyonları Listele
Mevcut veri merkezi lokasyonlarını listeler.
{
"success": true,
"data": {
"locations": [
{
"id": 1,
"name": "Istanbul",
"code": "IST",
"status": "active"
},
{
"id": 2,
"name": "Frankfurt",
"code": "FRA",
"status": "active"
}
]
}
}Sunucular
Sunucu yönetimi işlemleri
/serversSunucuları Listele
Hesabınıza ait tüm sunucuları listeler.
Parametreler
pageintegerper_pageintegerstatusstring{
"success": true,
"data": [
{
"server_id": "ABC123",
"name": "my-server",
"status": "active",
"ip_address": "192.168.1.100",
"package": {
"id": 1,
"name": "Basic Plan"
},
"amount": 29.99,
"next_billing_date": "2024-02-01T00:00:00Z"
}
]
}/serversSunucu Oluştur
Yeni bir sunucu oluşturur. Hesabınızda yeterli bakiye olmalıdır.
{
"package_id": 1,
"version_id": 1,
"location_id": 1,
"server_name": "my-new-server",
"password": "SecurePass123!",
"description": "My first server"
}/servers/{server_id}Sunucu Detayları
Belirtilen sunucunun detaylı bilgilerini getirir.
{
"success": true,
"data": {
"server_id": "ABC123",
"name": "my-server",
"status": "active",
"primary_ip": {
"ip_address": "192.168.1.100",
"rdns": "server.example.com"
},
"extra_ips": [],
"traffic_usage": {
"upload_used": 1073741824,
"download_used": 2147483648,
"upload_limit": 1000,
"upload_limit_unit": "GiB"
}
}
}/servers/{server_id}Sunucu Sil
Sunucuyu kalıcı olarak siler. Bu işlem geri alınamaz.
{
"success": true,
"message": "Server deleted successfully"
}/servers/{server_id}/startSunucuyu Başlat
Kapalı durumdaki sunucuyu başlatır.
{
"success": true,
"message": "Server started successfully"
}/servers/{server_id}/stopSunucuyu Durdur
Çalışan sunucuyu durdurur.
{
"success": true,
"message": "Server stopped successfully"
}/servers/{server_id}/restartSunucuyu Yeniden Başlat
Sunucuyu yeniden başlatır.
{
"success": true,
"message": "Server restarted successfully"
}/servers/{server_id}/upgradeSunucu Yükselt
Sunucu paketini yükseltir.
{
"new_package_id": 2,
"plan_id": 5
}/servers/{server_id}/password-resetŞifre Sıfırla
Root şifresini sıfırlar. Body gerekmez, yeni şifre response'da döner.
{
"success": true,
"message": "Password reset initiated",
"data": {
"server_id": "ABC123",
"new_password": "#0u0%sxdE86D"
}
}/servers/{server_id}/reinstallYeniden Kur
İşletim sistemini yeniden kurar. Tüm veriler silinir.
{
"version_id": 1
}/servers/{server_id}/vncVNC Konsol Erişimi
Sunucu için tek kullanımlık VNC viewer URL'i üretir. URL 300 saniye içinde açılmalıdır; süre dolduğunda yeniden istek atılır. Body gerekmez.
{
"success": true,
"data": {
"server_id": "abc-123",
"viewer_url": "https://app.netlen.com.tr/servers/vnc-console?token=a8f3e2b9c4d7f1a5e8b2c9d6f3a1e4b7c0d2e5f8a1b4c7d0e3f6a9c2b5d8f1e4",
"expires_at": "2026-05-14 15:42:30",
"expires_in": 300,
"vnc_password": "Xb!7yQ2dKm",
"usage_note": "Viewer URL tek kullanımlıktır ve 300 saniye içinde açılmalıdır."
}
}Sanal Veri Merkezi
VDC kaynak ve VM yönetimi
/resourcesVDC Kaynakları
Müşterinin satın aldığı VDC kaynakları, kullanım ve müsait kaynakları döner.
{
"success": true,
"data": {
"resources": {
"cpu_cores": 8,
"ram_gb": 16,
"disk_gb": 200,
"ipv4_count": 2,
"ipv6_count": 1,
"bandwidth_mbit": 1000
},
"usage": {
"cpu_used": 2,
"ram_used_gb": 4,
"disk_used_gb": 50,
"ipv4_used": 1,
"ipv6_used": 0,
"bandwidth_used_mbit": 100
},
"available": {
"cpu_available": 6,
"ram_available_gb": 12,
"disk_available_gb": 150,
"ipv4_available": 1,
"ipv6_available": 1,
"bandwidth_available_mbit": 900
}
}
}/vmsVM Listesi
VDC içindeki VM listesini döner.
{
"success": true,
"data": {
"vms": [
{
"unique_id": "VDC-A1B2C",
"vm_name": "web-server",
"cpu_cores": 2,
"ram_gb": 4,
"disk_gb": 50,
"primary_ip": "192.168.1.100",
"status": "active",
"os_name": "Debian",
"os_version": "12"
}
]
}
}/vmsVM Oluştur
VDC içinde yeni VM oluşturur.
{
"vm_name": "my-vm",
"password": "SecurePass123!",
"cpu_cores": 2,
"ram_gb": 4,
"disk_gb": 50,
"location_name": "Türkiye",
"os_id": 3
}/vms/{vm_id}VM Detayları
Tek VM detayını döner.
{
"success": true,
"data": {
"vm_id": "VDC-A1B2C",
"vm_name": "web-server",
"cpu_cores": 2,
"ram_gb": 4,
"disk_gb": 50,
"status": "active",
"primary_ip": "192.168.1.100"
}
}/vms/{vm_id}VM Sil
VM'i siler. Body'de VM adı onayı zorunludur.
{
"confirm_vm_name": "web-server"
}/vms/{vm_id}/resizeVM Boyutlandır
VM kaynaklarını günceller.
{
"cpu_cores": 4,
"ram_gb": 8,
"disk_gb": 100
}/vms/{vm_id}/startVM Başlat
VM'yi başlatır.
{
"success": true,
"message": "VM is starting"
}/vms/{vm_id}/stopVM Durdur
VM'yi durdurur.
{
"success": true,
"message": "VM is stopping"
}/vms/{vm_id}/usageVM Kullanımı
VM kullanım bilgisi.
{
"success": true,
"data": {
"usage": {
"cpu": {
"load_average": 0.5
},
"memory": {
"used_mb": 1024
},
"disk": {
"used_gb": 12
}
}
}
}/vms/{vm_id}/snapshotsSnapshot Listesi
VM'in snapshot listesi.
{
"success": true,
"data": {
"snapshots": [
{
"id": 42,
"name": "Yedek",
"status": "completed"
}
]
}
}/vms/{vm_id}/snapshotsSnapshot Oluştur
VM için snapshot oluşturur.
{
"name": "Yedek-20250124"
}/vms/{vm_id}/snapshots/{snapshot_id}Snapshot Sil
Snapshot'u siler.
{
"success": true,
"message": "Snapshot deleted successfully"
}/vms/{vm_id}/snapshots/{snapshot_id}/restoreSnapshot Geri Yükle
Snapshot'tan geri yükler.
{
"success": true,
"message": "Snapshot restore started"
}IP Adresleri
IP adresi yönetimi
/servers/{server_id}/ipsIP Adreslerini Listele
Sunucuya ait IP adreslerini listeler.
{
"success": true,
"data": {
"server_id": "ABC123",
"primary_ip": {
"ip_address": "192.168.1.100",
"type": "IPv4",
"rdns": "server.example.com"
},
"extra_ips": [
{
"ip_address": "192.168.1.101",
"type": "IPv4",
"rdns": null
}
],
"ipv6_address": "2001:db8::1"
}
}/servers/{server_id}/ips/purchaseEk IP Satın Al
Sunucuya ek IP adresi ekler.
{
"ip_type": "IPv4"
}/servers/{server_id}/ips/{ip_address}rDNS Bilgisi Al
IP adresinin reverse DNS kaydını getirir.
{
"success": true,
"data": {
"ip_address": "192.0.2.1",
"rdns": "server.example.com"
}
}/servers/{server_id}/ips/{ip_address}rDNS Güncelle
IP adresinin reverse DNS kaydını günceller.
{
"rdns": "server.example.com"
}/servers/{server_id}/ips/{ip_address}IP İptal Et
Ek IP adresini iptal eder.
{
"success": true,
"message": "Extra IP cancelled successfully"
}Snapshots
Anlık görüntü yönetimi
/servers/{server_id}/snapshotsSnapshot Listele
Sunucunun snapshot'larını listeler.
{
"success": true,
"data": [
{
"id": "snapshot-123",
"name": "backup-2025-12-16",
"created_at": "2025-12-16T10:00:00Z"
}
]
}/servers/{server_id}/snapshotsSnapshot Oluştur
Sunucunun anlık görüntüsünü oluşturur.
{
"name": "backup-2025-12-16"
}/servers/{server_id}/snapshots/{snapshot_id}/restoreSnapshot'tan Geri Yükle
Sunucuyu snapshot'tan geri yükler.
{
"success": true,
"message": "Snapshot restored successfully"
}/servers/{server_id}/snapshots/{snapshot_id}Snapshot Sil
Snapshot'u kalıcı olarak siler.
{
"success": true,
"message": "Snapshot deleted successfully"
}Destek Talepleri
Destek talebi yönetimi
/departmentsDepartmanları Listele
Aktif destek departmanlarını listeler.
{
"success": true,
"data": [
{
"id": 1,
"name": "Teknik Destek",
"email": "support@netlen.com.tr"
},
{
"id": 2,
"name": "Satış",
"email": "sales@netlen.com.tr"
}
]
}/ticketsTalepleri Listele
Destek taleplerini listeler.
Parametreler
statusstring{
"success": true,
"data": [
{
"id": "T000001",
"subject": "Server issue",
"status": "open",
"department": "Technical Support"
}
]
}/ticketsTalep Oluştur
Yeni destek talebi oluşturur.
{
"subject": "Sunucu erişim sorunu",
"message": "Sunucuma SSH ile bağlanamıyorum.",
"department_id": 1,
"priority": "high"
}/tickets/{ticket_id}Talep Detayları
Destek talebi detaylarını getirir.
{
"success": true,
"data": {
"id": "T000001",
"subject": "Server issue",
"status": "open",
"messages": [
{
"id": 1,
"message": "I cannot connect to my server",
"author": "Customer",
"created_at": "2025-01-15T10:00:00Z"
}
]
}
}/tickets/{ticket_id}/replyYanıt Ekle
Destek talebine yanıt ekler.
{
"message": "Problem solved, thank you!"
}/tickets/{ticket_id}/closeTalebi Kapat
Destek talebini kapatır.
{
"success": true,
"message": "Ticket closed successfully"
}Alt Kullanıcılar
Alt kullanıcı yönetimi
/sub-usersAlt Kullanıcıları Listele
Alt kullanıcıları listeler.
{
"success": true,
"data": [
{
"id": 1,
"email": "john@example.com",
"first_name": "John",
"last_name": "Doe",
"status": "active"
}
]
}/sub-usersAlt Kullanıcı Oluştur
Yeni alt kullanıcı oluşturur.
{
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Doe",
"password": "SecurePass123!"
}/sub-users/{sub_user_id}Alt Kullanıcı Detayları
Alt kullanıcı detaylarını getirir.
{
"success": true,
"data": {
"id": 1,
"email": "john@example.com",
"first_name": "John",
"last_name": "Doe",
"permissions": [
"servers.view",
"servers.manage"
]
}
}/sub-users/{sub_user_id}Alt Kullanıcı Güncelle
Alt kullanıcı bilgilerini günceller.
{
"first_name": "John",
"last_name": "Smith"
}/sub-users/{sub_user_id}Alt Kullanıcı Sil
Alt kullanıcıyı siler.
{
"success": true,
"message": "Sub-user deleted successfully"
}Bakiye
Bakiye ve işlem geçmişi
/balanceBakiye Bilgisi
Hesap bakiyesini getirir.
{
"success": true,
"data": {
"balance": 1247.5,
"total_deposits": 2000,
"total_withdrawals": 752.5
}
}/balance/transactionsİşlem Geçmişi
Bakiye işlem geçmişini listeler.
{
"success": true,
"data": [
{
"id": 1,
"type": "deposit",
"amount": 100,
"status": "success",
"created_at": "2025-01-15T10:00:00Z"
},
{
"id": 2,
"type": "withdraw",
"amount": -29.99,
"description": "Server charge",
"created_at": "2025-01-14T00:00:00Z"
}
]
}Paket Tipleri
Farklı hizmet paketleri
/email-packagesE-posta Paketleri
E-posta hosting paketlerini listeler.
{
"success": true,
"data": [
{
"id": 1,
"name": "Starter Email",
"disk_quota_mb": 5120,
"max_accounts": 10,
"monthly_price": 9.99
}
]
}/web-hosting-packagesWeb Hosting Paketleri
Web hosting paketlerini listeler.
{
"success": true,
"data": [
{
"id": 1,
"name": "Starter Web",
"disk_quota_mb": 10240,
"max_domains": 5,
"monthly_price": 4.99
}
]
}/colocation-packagesColocation Paketleri
Colocation hizmet paketlerini listeler.
{
"success": true,
"data": [
{
"id": 1,
"name": "Single Server",
"type": "single_server",
"monthly_price": 99.99
}
]
}/dedicated-server-packagesFiziksel Sunucu Paketleri
Fiziksel sunucu paketlerini listeler.
{
"success": true,
"data": [
{
"id": 1,
"name": "DS-1",
"cpu_cores": 4,
"ram_gb": 16,
"storage_gb": 500,
"monthly_price": 199.99
}
]
}/ip-subnet-packagesIP Subnet Paketleri
IP subnet paketlerini listeler.
{
"success": true,
"data": [
{
"id": 1,
"name": "/29 Subnet",
"subnet_size": "/29",
"monthly_price": 49.99
}
]
}Domain (v1)
3rd-party / bayi domain sipariş & yönetim API'si. Auth: API key (header). Test anahtarı (is_test) ile gelen istekler sandbox'a düşer — gerçek kayıt/çekim yapılmaz, sabit yanıt döner.
/domains/checkMüsaitlik + Fiyat Sorgula
Domain müsaitliğini ve fiyatını döner. status: available | unavailable | requires_document (.tr bazı uzantılar belge ister).
{
"domain": "example.com"
}/domains/pricingTLD Fiyat Listesi
Tüm TLD'lerin kayıt / yenileme / transfer fiyatlarını döner. Filtreler: ?tld=.com, ?discount=1 (indirimli), ?featured=1 (öne çıkan).
Parametreler
tldstringdiscountbooleanfeaturedboolean{
"success": true,
"count": 120,
"currency": "USD",
"data": [
{
"tld": ".com",
"register": "9.99",
"renewal": "11.99",
"transfer": "9.99",
"currency": "USD",
"supports_whois_privacy": true,
"years_min": 1,
"years_max": 10,
"discount_percent": 0,
"has_discount": false,
"is_featured": false
}
]
}/domains/whoisWHOIS Sorgusu
Domain WHOIS bilgisi. ?domain=... query'si ile veya /domains/{domain}/whois yolu ile çağrılır. White-label: yanıtta WHOIS sorgu kaynağının/sağlayıcısının adı geçmez. .tr için ek alanlar: transfer_lock, frozen, nic_handle. Kaynak ulaşılamazsa 502 WHOIS_UNAVAILABLE.
Parametreler
domainstring{
"success": true,
"data": {
"domain": "example.com",
"registered": true,
"registrar": "...",
"created_date": "...",
"updated_date": "...",
"expiry_date": "...",
"status": [],
"nameservers": [],
"registrant": {
"organization": "...",
"country": "..."
}
}
}/domainsDomainleri Listele
Çağıran müşterinin domainlerini listeler.
Parametreler
statusstring{
"success": true,
"data": [
{
"domain": "example.com",
"service_id": 123,
"status": "active",
"registrar": "netlen",
"years": 1,
"registered_at": "2025-01-01",
"expires_at": "2026-01-01",
"next_billing_date": "2026-01-01",
"auto_renew": false,
"whois_privacy": false,
"transfer_lock": true,
"nameservers": [
"ns1.netlen.com.tr",
"ns2.netlen.com.tr"
]
}
]
}/domains/{domain}Domain Detayı
Yalnız çağıran müşterinin kendi domaini; yoksa 404 DOMAIN_NOT_FOUND.
{
"success": true,
"data": {
"domain": "example.com",
"service_id": 123,
"status": "active",
"years": 1,
"expires_at": "2026-01-01",
"auto_renew": false,
"whois_privacy": false,
"transfer_lock": true,
"nameservers": [
"ns1.netlen.com.tr",
"ns2.netlen.com.tr"
]
}
}/domainsDomain Kaydı (Register)
Fiyat = register × years, bakiyeden düşülür (pay_from: balance; yetersizse 402 INSUFFICIENT_BALANCE). contact 3 modda gelir: account (varsayılan = müşteri profili), inline (tam obje), partial (verilenler override, kalanı profilden). .tr için tckn VEYA (organization + tax_number) zorunlu; eksikse 422 MISSING_CONTACT_FIELDS. Çift çekime karşı Idempotency-Key header'ı (veya body idempotency_key) desteklenir.
{
"domain": "example.com",
"years": 1,
"pay_from": "balance",
"auto_renew": false,
"whois_privacy": false,
"nameservers": [
"ns1.netlen.com.tr",
"ns2.netlen.com.tr"
],
"contact": "account"
}/domains/transferDomain Transferi
Gelen transfer. Ücret transfer_price × years (yoksa register fiyatı), bakiyeden. Yanıt genelde status: pending (onay süreci); durumu GET /domains/{domain} ile izle. Registrant müşteri profili (account) kullanılır. Idempotency-Key desteklenir. (/domains/{domain}/transfer de kabul edilir.)
{
"domain": "example.com",
"auth_code": "EPP-XXXX",
"years": 1,
"pay_from": "balance",
"auto_renew": false,
"whois_privacy": false,
"nameservers": [
"ns1.netlen.com.tr",
"ns2.netlen.com.tr"
]
}/domains/{domain}/renewDomain Yenileme
Ücret renewal_price × yıl. .tr en fazla 5, diğer TLD en fazla 10 yıl (years otomatik sınırlanır; yanıtta years = uygulanan, requested_years = istenen). Idempotency-Key desteklenir.
{
"years": 1,
"pay_from": "balance"
}/domains/{domain}/nameserversNameserver'ları Getir
Domain nameserver'larını döner.
{
"success": true,
"data": {
"domain": "example.com",
"nameservers": [
"ns1.netlen.com.tr",
"ns2.netlen.com.tr"
]
}
}/domains/{domain}/nameserversNameserver'ları Güncelle
Nameserver'ları günceller (en az 2). Ücretsiz.
{
"nameservers": [
"ns1.netlen.com.tr",
"ns2.netlen.com.tr"
]
}/domains/{domain}/whois-privacyWHOIS Gizliliği
WHOIS gizliliğini açar/kapatır. Ücretsiz.
{
"enable": true
}/domains/{domain}/auto-renewOtomatik Yenileme
Otomatik yenilemeyi açar/kapatır. Ücretsiz.
{
"enabled": true
}/domains/{domain}/lockTransfer Kilidi (Lock / Unlock)
Transfer kilidini açar (/lock) veya kaldırır (/unlock). Ücretsiz.
{
"success": true,
"data": {
"domain": "example.com",
"transfer_lock": true
}
}/domains/{domain}/auth-codeEPP / Auth Code
Giden transfer için EPP/auth code döner.
{
"success": true,
"data": {
"domain": "example.com",
"auth_code": "EPP-XXXX"
}
}