Nowpeak Hosting API
Bu doküman bir yapay zeka ajanı tarafından doğrudan okunup uygulanabilir. Panelden yapılabilen hemen her işlem bu API ile de yapılabilir: site kurma, komut çalıştırma (composer/wp-cli/git), dosya yükleme, veritabanı açma, alan adı ve alt alan adı bağlama.
Temel bilgiler
Uç nokta : https://nowpeak.com/api/client/{modul}/{metot}
Yöntem : POST
Gövde : application/json
Kimlik : HTTP Basic
kullanıcı adı = client (sabit, e-posta DEĞİL)
şifre = API anahtarı (panel → Hesap Ayarları)
Sık yapılan hata: Basic auth kullanıcı adı olarak e-posta
yazmayın. Kullanıcı adı her zaman client kelimesidir.
Yanıt biçimi
Başarılı : {"result": <veri>, "error": null}
Hata : {"result": null, "error": {"message": "...", "code": 123}}
Örnek çağrı
curl -u "client:API_ANAHTARINIZ" \
-H "Content-Type: application/json" \
-X POST -d '{}' \
https://nowpeak.com/api/client/panel/app_list
Hosting yönetimi
panel/app_list — hostinglerin listesi
Girdi : {}
Çıktı : [{id, label, domain, custom_domain, status, disk_gb, cpu_cores, ram_mb,
url, meta{db_host, db_name, db_user, sftp_host, sftp_port, ...}, disk{used,total,pct}}]
panel/app_get — tek hosting
Girdi : {"id": 48}
panel/app_catalog — kurulabilir ürünler ve seçenekler
Girdi : {}
Çıktı : [{slug, name, disks[], cpus[], rams[], default_disk, selectable_res, ...}]
panel/app_create — yeni hosting kur
Girdi : {"type": "php-hosting", // veya wordpress, joomla, n8n …
"label": "Müşteri sitesi",
"domain_kind": "sub", // "sub" = ücretsiz adres, "custom" = kendi alan adı
"sub": "musterim", // domain_kind=sub ise
"domain": "ornek.com", // domain_kind=custom ise
"disk_gb": 10, "cpu_cores": 2, "ram_mb": 2048,
"period": "1M"} // 1M | 1Y
Not : Kurulum ödeme sonrası başlar; durum "awaiting_payment" → "active" olur.
★ Komut çalıştırma — kurulumun kalbi
panel/app_exec
Girdi : {"id": 48, "command": "wp core download", "timeout": 300}
Çıktı : {"exit_code": 0, "output": "...", "truncated": false}
Çalışma ortamı:
kullanıcı : www-data (root değil)
dizin : /var/www/html (site kökü)
kabuk : sh -lc
zaman aşımı: 1–900 sn (varsayılan 300)
çıktı : en fazla 256 KB
Hazır araçlar: php 8.4, composer, wp (WP-CLI), git, npm/node yok, curl, unzip, tar
Ortam değişkenleri: $DB_HOST $DB_NAME $DB_USER $DB_PASSWORD $SITE_DOMAIN
Örnek: sıfırdan WordPress kurulumu
1) {"id":48,"command":"wp core download --locale=tr_TR"}
2) {"id":48,"command":"wp config create --dbname=\"$DB_NAME\" --dbuser=\"$DB_USER\" --dbpass=\"$DB_PASSWORD\" --dbhost=\"$DB_HOST\" --skip-check"}
3) {"id":48,"command":"wp core install --url=https://SITE --title=Baslik --admin_user=admin --admin_password=... --admin_email=... --skip-email"}
4) {"id":48,"command":"wp plugin install woocommerce --activate"}
Örnek: Laravel
{"id":48,"command":"composer create-project laravel/laravel . --no-interaction","timeout":900}
{"id":48,"command":"php artisan migrate --force"}
Dosya işlemleri
Yollar site köküne (/var/www/html) görecelidir; kök dışına çıkılamaz.
panel/app_file_list
Girdi : {"id":48, "path":"."}
Çıktı : {path, items:[{type:"file|dir", size, modified, name}]}
panel/app_file_read
Girdi : {"id":48, "path":"wp-config.php"}
Çıktı : {path, size, encoding:"utf-8|base64", content}
panel/app_file_write
Girdi : {"id":48, "path":"index.php", "content":"<?php echo 1;",
"encoding":"utf-8"} // ikili dosya için "base64"
Sınır : ~6 MB. Daha büyüğü için SFTP kullanın (bilgiler app_list meta'sında).
panel/app_file_delete
Girdi : {"id":48, "path":"eski-klasor"}
panel/app_file_mkdir
Girdi : {"id":48, "path":"uploads/2026"}
panel/app_file_rename
Girdi : {"id":48, "from":"eski.php", "to":"yeni.php"}
panel/app_file_extract
Girdi : {"id":48, "path":"site.zip", "to":"."} // zip / tar.gz / tgz
Veritabanı
Her hosting kendi MariaDB sunucusuna sahiptir; sınırsız veritabanı açılabilir. Veritabanı verisi hostingin disk kotasından sayılır.
panel/app_db_list
Girdi : {"id":48}
Çıktı : {ok:true, list:[{name, bytes}], host:"np-48-db", pma:"https://db.nowpeak.com/"}
panel/app_db_create
Girdi : {"id":48, "name":"magaza"} // a-z0-9_ , harfle başlar
Çıktı : {name, user, password, host} // şifre BİR KEZ gösterilir
panel/app_db_delete
Girdi : {"id":48, "name":"magaza"}
panel/app_db_sso — phpMyAdmin'e girişli bağlantı
Girdi : {"id":48, "db":"magaza"} // db boş bırakılabilir (sunucu kökü)
Çıktı : {ok:true, url:"https://db.nowpeak.com/_np_sso.php?t=…&db=magaza"}
Not : Bağlantı 8 saat geçerlidir ve tarayıcıda açıldığında giriş sormaz.
Alan adı ve alt alan adı
panel/app_set_domain — kendi alan adını bağla
Girdi : {"id":48, "domain":"ornek.com"}
Ön koşul: ornek.com A kaydı 45.8.196.176 adresine yönlenmeli.
İşlem asenkrondur; durum "updating" → "active". SSL otomatik alınır.
panel/app_subdomain_add
Girdi : {"id":48, "name":"blog"} // blog.ornek.com olur
Ön koşul: önce kendi alan adı bağlanmış olmalı. Sınırsızdır.
Alt alan adı sertifikaya otomatik eklenir; A kaydı gerekir.
panel/app_subdomain_remove
Girdi : {"id":48, "name":"blog.ornek.com"}
Git
panel/app_git_pull
Girdi : {"id":48, "repo":"https://github.com/kullanici/depo.git", "branch":"main"}
Yalnız https:// genel depolar. İşlem asenkrondur.
Alan adları (kayıt/transfer)
panel/folders_list, panel/folder_create, panel/folder_assign → alan adı klasörleri
panel/dns_records, panel/dns_save, panel/dns_delete → DNS kayıtları
panel/set_autorenew → otomatik yenileme
API anahtarı
panel/api_key → {api_key, endpoint, auth, docs} (yoksa üretir)
panel/api_key_reset → {api_key} (eskisi geçersiz olur)
Asenkron işlemler
Alan adı bağlama, alt alan adı ve Git işlemleri kuyruğa alınır. Çağrı hemen döner;
durumu panel/app_get ile izleyin:
status: "updating" → işlem sürüyor
status: "active" → tamamlandı
error alanı dolu → başarısız (mesaj içinde sebep)
Sınırlar
- Komut zaman aşımı: 900 saniye
- Komut çıktısı: 256 KB
- Dosya yazma: ~6 MB (üstü için SFTP)
- Alt alan adı: 100
- CPU/RAM/disk: satın alınan pakete göre; konteyner seviyesinde gerçekten uygulanır