v1 Beta — yayında

saatlik.cloud API

Kendi yazılımından sunucu kur, yönet, snapshot al, sonlandır. Türkiye'nin ilk saatlik sunucu API'si — tek bir curl komutuyla dakikalar içinde sunucun hazır.

Base URLhttps://api.saatlik.cloud/v1
FormatJSON istek/yanıt — Content-Type: application/json
ŞartlarAPI ile sipariş, hizmet sözleşmesinin kabulü sayılır

Kimlik Doğrulama

Her istek Authorization: Bearer başlığıyla yapılır. Anahtarını panelden oluştur: Ayarlar → API Anahtarı. Anahtar yalnızca oluşturulduğu anda bir kez gösterilir; veritabanında geri okunamayan özetiyle (hash) saklanır.

YetkiKapsam
readListeleme ve okuma uçları (her anahtarda vardır)
writeSunucu kurma, güç işlemleri, yeniden kurulum, snapshot, şifre, upgrade, eklenti, rDNS yazma
destroySunucu sonlandırma — anahtar oluştururken ayrıca seçilmeli
# Örnek
curl https://api.saatlik.cloud/v1/me \
  -H "Authorization: Bearer sc_live_XXXXXXXXXXXXXXXX"

Hız Limitleri

LimitDeğer
Genel istek60 istek / dakika (anahtar başına)
Sunucu kurma2 / saat — ayrıca hesap limitin (günlük) geçerli
Güç işlemi10 / saat
Yeniden kurulum1 / saat, sunucu başına 30 dk arayla
Sonlandır → yeni kur10 dk bekleme

Limit aşımında 429 döner; Retry-After başlığı kaç saniye bekleneceğini söyler. Limitler panel ve API genelinde ortak sayılır.

Hatalar

Hatalar standart HTTP kodları ve tutarlı bir JSON gövdesiyle döner:

{
  "error": {
    "code": "insufficient_credit",
    "message": "Bakiyeniz bu işlem için yeterli değil."
  }
}
HTTPKodlar
401missing_token · invalid_token
403forbidden — anahtarın yetkisi yok · no_snapshot_addon
404not_found
409invalid_state · already_terminated · request_in_progress
422validation_failed · invalid_product · invalid_image · invalid_addon · invalid_action · missing_idempotency_key · insufficient_credit · quota_exceeded · limit_exceeded · rejected
429rate_limited — Retry-After başlığına bak
400/503unsupported_location · temporarily_unavailable · action_failed

Hesap

GET /v1/me read

Hesap Bilgisi

Hesap, bakiye, kullanım limitleri ve anlık kaynak kullanımını döner.
İstek
curl https://api.saatlik.cloud/v1/me \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{
  "account": {"client_id": 1, "name": "Ad Soyad", "email": "..."},
  "balance": 195.35,
  "currency": "TRY",
  "limits": {"create_per_day": 3, "max_total_cpu": 8, ...},
  "usage": {"servers": 2, "cpu": 4, "ram_gb": 8, ...}
}
GET /v1/transactions read

İşlem Geçmişi

Kredi hareketlerini yeniden eskiye sayfalı listeler.
Parametreler
AlanTipAçıklama
page integer opsiyonel Sayfa numarası (varsayılan 1)
per_page integer opsiyonel Sayfa başına kayıt, max 100 (varsayılan 25)
type string opsiyonel Tek tipe filtrele: topup, usage_minute_server, termination, refund ...
İstek
curl "https://api.saatlik.cloud/v1/transactions?per_page=25" \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{
  "transactions": [
    {"id": 12805, "type": "usage_minute_server", "amount": -0.0116,
     "description": "Dakikalık kullanım — HKC...", "server_id": "HKC...",
     "created_at": "2026-06-09T18:33:01+03:00"}
  ],
  "meta": {"page": 1, "per_page": 25, "total": 12166}
}

Kaynaklar

GET /v1/products read

Paketler

Satın alınabilir sunucu paketlerini ve saatlik fiyatları listeler. Dönen slug değeri sunucu kurarken product alanında kullanılır.
İstek
curl https://api.saatlik.cloud/v1/products \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{
  "products": [
    {"slug": "hk-2", "name": "HK-2", "category": "saatlik-bulut-sunucu",
     "cpu": 2, "ram_gb": 4, "disk_gb": 64, "hourly_rate": 0.9028,
     "billing_mode": "both", "min_credit": 250}
  ]
}
GET /v1/locations read

Lokasyonlar

Veri merkezi lokasyonlarını ve stok durumunu listeler. slug değeri kurulumda location alanında kullanılır.
İstek
curl https://api.saatlik.cloud/v1/locations \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{
  "locations": [
    {"slug": "prox", "label": "Frankfurt-1", "location": "Frankfurt, Almanya",
     "country": "DE", "in_stock": true}
  ]
}
GET /v1/images read

İşletim Sistemleri & Uygulamalar

Kurulabilir işletim sistemlerini (os), panelleri (panel) ve hazır uygulamaları (app) listeler. slug değeri kurulum ve yeniden kurulumda os alanında kullanılır.
İstek
curl https://api.saatlik.cloud/v1/images \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{
  "images": [
    {"slug": "ubuntu2404", "name": "Ubuntu 24.04", "category": "os"},
    {"slug": "wordpress", "name": "WordPress", "category": "app"}
  ]
}
GET /v1/addon-types read

Eklenti Türleri

Satın alınabilir eklenti türlerini ve fiyatlarını listeler (ek IP, snapshot paketi, ek RAM/CPU/disk, lisanslar...). slug değeri eklenti satın alırken type alanında kullanılır.
İstek
curl https://api.saatlik.cloud/v1/addon-types \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{
  "addon_types": [
    {"slug": "snapshot", "name": "Snapshot Paketi", "billing_type": "monthly",
     "hourly_rate": null, "monthly_price": 40}
  ]
}

Sipariş

POST /v1/servers write

Sunucu Kur (Satın Al)

Yeni sunucu satın alır ve kurar; ücret kredi bakiyenden kesilir (saatlik ya da aylık peşin), kurulum arka planda sürer, sunucu hazır olunca e-posta gelir. Idempotency-Key başlığı zorunludur — aynı key ile tekrarlanan istek ikinci sunucu kurmaz, ilkini döner. Başarıda 201 döner; API ile sipariş hizmet sözleşmesinin kabulü sayılır.
Parametreler
AlanTipAçıklama
product string zorunlu Paket slug — GET /v1/products
location string zorunlu Lokasyon slug — GET /v1/locations
os string zorunlu İşletim sistemi/uygulama slug — GET /v1/images
hostname string zorunlu FQDN — örn. web1.alanadi.com
root_password string zorunlu 8-64 karakter, sadece harf ve rakam
billing_type string opsiyonel hourly (varsayılan) veya monthly
ip_type string opsiyonel ipv4 (varsayılan) veya ipv6
sata_gb integer opsiyonel Ek SATA disk GB (destekleyen lokasyonlarda)
İstek
curl -X POST https://api.saatlik.cloud/v1/servers \
  -H "Authorization: Bearer sc_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: siparis-001" \
  -d '{"product":"hk-2","location":"prox","os":"ubuntu2404",
       "hostname":"web1.alanadi.com","root_password":"GucluSifre123"}'
Yanıt
{
  "server": {"id": "HKC...", "status": "creating", "hostname": "web1.alanadi.com", ...}
}
POST /v1/servers/{id}/addons write

Eklenti Satın Al

Sunucuya eklenti satın alır: snapshot paketi, ek IP, ek RAM/CPU/disk, panel lisansı, otomatik yedekleme... Ücret kredinden kesilir; kaynak eklentilerinde sunucu kısa süre yeniden başlatılabilir. Başarıda 201 döner.
Parametreler
AlanTipAçıklama
type string zorunlu Eklenti slug — GET /v1/addon-types
quantity integer opsiyonel Adet/miktar (varsayılan 1; örn. RAM için GB)
İstek
curl -X POST https://api.saatlik.cloud/v1/servers/HKC.../addons \
  -H "Authorization: Bearer sc_live_..." \
  -H "Content-Type: application/json" \
  -d '{"type":"snapshot","quantity":1}'
Yanıt
{"addon": "snapshot", "quantity": 1, "status": "ordered"}
POST /v1/servers/{id}/upgrade write

Paket Yükselt

Sunucuyu daha büyük bir pakete yükseltir (CPU/RAM/disk büyür; disk küçültme desteklenmez). İşlem sırasında sunucu kısa süre yeniden başlatılır.
Parametreler
AlanTipAçıklama
product string zorunlu Yeni paket slug — GET /v1/products
İstek
curl -X POST https://api.saatlik.cloud/v1/servers/HKC.../upgrade \
  -H "Authorization: Bearer sc_live_..." \
  -H "Content-Type: application/json" \
  -d '{"product":"hk-3"}'
Yanıt
{"upgrade": "completed", "product": "hk-3", "server": {...}}

Sunucu Yönetimi

GET /v1/servers read

Sunucu Listesi

Hesabınızdaki aktif sunucuları listeler (sonlandırılmışlar hariç).
İstek
curl https://api.saatlik.cloud/v1/servers \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{
  "servers": [
    {"id": "HKC...", "name": "web1", "hostname": "web1.alanadi.com",
     "status": "running", "ip": "1.2.3.4", "location": "Frankfurt, Almanya",
     "cpu": 2, "ram_gb": 4, "disk_gb": 64, "billing_type": "hourly",
     "hourly_rate": 0.9028, "os": "Ubuntu 24.04", "created_at": "..."}
  ]
}
GET /v1/servers/{id} read

Sunucu Detayı

Tek sunucunun detayını döner. {id} sunucu kimliğidir (listede dönen id, örn. HKC...).
İstek
curl https://api.saatlik.cloud/v1/servers/HKC... \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{
  "server": {"id": "HKC...", "status": "running", "ip": "1.2.3.4",
    "ip_type": "ipv4", "sata_disk_gb": 0, "suspended_at": null, ...}
}
POST /v1/servers/{id}/actions write

Güç İşlemleri

Sunucuyu başlatır, durdurur veya yeniden başlatır. Askıdaki sunucu yalnızca resume kabul eder. Durdurulan sunucuda saatlik ücret kesimi devam eder. Uzun süreli kapalı sunucuda başlatma/durdurma kabul edilmez; açmak panelden yapılır.
Parametreler
AlanTipAçıklama
type string zorunlu start · stop · reboot · hard_reboot · resume
İstek
curl -X POST https://api.saatlik.cloud/v1/servers/HKC.../actions \
  -H "Authorization: Bearer sc_live_..." \
  -H "Content-Type: application/json" \
  -d '{"type":"reboot"}'
Yanıt
{"action": "reboot", "status": "running"}
POST /v1/servers/{id}/reinstall write

Yeniden Kur

Sunucuyu seçilen sistemle sıfırdan kurar — diskteki her şey silinir. Sunucu başına 30 dakikada bir yapılabilir. Başarıda 202 döner, işlem arka planda sürer.
Parametreler
AlanTipAçıklama
os string zorunlu Yeni sistem slug — GET /v1/images
root_password string zorunlu 8-64 karakter, sadece harf ve rakam
hostname string opsiyonel Yeni FQDN (boşsa mevcut kalır)
İstek
curl -X POST https://api.saatlik.cloud/v1/servers/HKC.../reinstall \
  -H "Authorization: Bearer sc_live_..." \
  -H "Content-Type: application/json" \
  -d '{"os":"almalinux9","root_password":"YeniSifre123"}'
Yanıt
{"reinstall": "started", "os": "almalinux9", "hostname": "web1.alanadi.com"}
POST /v1/servers/{id}/password write

Root Şifresi Değiştir

Sunucunun root şifresini değiştirir (sunucu çalışırken uygulanır).
Parametreler
AlanTipAçıklama
new_password string zorunlu 8-64 karakter
İstek
curl -X POST https://api.saatlik.cloud/v1/servers/HKC.../password \
  -H "Authorization: Bearer sc_live_..." \
  -H "Content-Type: application/json" \
  -d '{"new_password":"YeniSifre123"}'
Yanıt
{"password": "changed"}
GET /v1/servers/{id}/addons read

Sunucu Eklentileri

Sunucudaki aktif/bekleyen eklentileri listeler. Dönen id değeri eklenti iptalinde kullanılır.
İstek
curl https://api.saatlik.cloud/v1/servers/HKC.../addons \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{
  "addons": [
    {"id": 12, "type": "snapshot", "name": "Snapshot Paketi", "quantity": 1,
     "status": "active", "assigned_ip": null, "next_billing": "..."}
  ]
}
DELETE /v1/servers/{id}/addons/{addonId} write

Eklenti İptal

Eklentiyi iptal eder. Disk büyütme (extra-disk) iptal edilemez; kaynak eklentilerinin iptalinde sunucu yeniden başlatılabilir.
İstek
curl -X DELETE https://api.saatlik.cloud/v1/servers/HKC.../addons/12 \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{"cancelled": 12}
DELETE /v1/servers/{id} destroy

Sunucuyu Sonlandır

Geri alınamaz. Sunucuyu kalıcı olarak sonlandırır, faturalama durur. destroy yetkili anahtar gerektirir (anahtar oluştururken ayrıca seçilmeli). Başarıda 202 döner.
İstek
curl -X DELETE https://api.saatlik.cloud/v1/servers/HKC... \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{"terminate": "started"}

Snapshots

GET /v1/servers/{id}/snapshots read

Snapshot Listesi

Sunucunun anlık görüntülerini, kotasını ve kullanımını döner. Snapshot almak için sunucuda aktif snapshot eklentisi olmalıdır.
İstek
curl https://api.saatlik.cloud/v1/servers/HKC.../snapshots \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{
  "snapshots": [
    {"name": "oncesi", "created": "09.06.2026 14:22", "description": null}
  ],
  "quota": 3, "used": 1
}
POST /v1/servers/{id}/snapshots write

Snapshot Al

Sunucunun anlık görüntüsünü alır. Başarıda 201 döner.
Parametreler
AlanTipAçıklama
name string zorunlu Harfle başlar; harf/rakam/tire/altçizgi, max 40
description string opsiyonel Açıklama (max 200)
İstek
curl -X POST https://api.saatlik.cloud/v1/servers/HKC.../snapshots \
  -H "Authorization: Bearer sc_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name":"guncelleme-oncesi"}'
Yanıt
{"snapshot": "guncelleme-oncesi"}
POST /v1/servers/{id}/snapshots/{name}/restore write

Snapshot'a Geri Dön

Yıkıcı işlem: sunucu, snapshot alındığı ana geri döner — sonrasındaki tüm değişiklikler kaybolur. İşlem sırasında sunucu kapatılıp açılır.
İstek
curl -X POST https://api.saatlik.cloud/v1/servers/HKC.../snapshots/guncelleme-oncesi/restore \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{"restore": "completed", "snapshot": "guncelleme-oncesi"}
DELETE /v1/servers/{id}/snapshots/{name} write

Snapshot Sil

Anlık görüntüyü kalıcı olarak siler.
İstek
curl -X DELETE https://api.saatlik.cloud/v1/servers/HKC.../snapshots/guncelleme-oncesi \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{"deleted": "guncelleme-oncesi"}

Fiziksel Sunucu

GET /v1/physical/configs read

Konfigürasyonlar

Satın alınabilir fiziksel sunucu konfigürasyonlarını, stok ve fiyatları listeler. Dönen config değeri sipariş verirken kullanılır. Teslim modeli rescue'dur: işletim sistemini rehberdeki gibi kendin kurarsın.
İstek
curl https://api.saatlik.cloud/v1/physical/configs \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{
  "configs": [
    {"config": "493b1a...", "cpu": "Intel Core i7-6700", "ram_gb": 32,
     "disk": "2×4 TB HDD", "location": "Almanya", "hourly_rate": 6.81,
     "monthly_price": 3189, "stock": 1, "min_hours": 3}
  ],
  "delivery_model": "rescue"
}
GET /v1/physical/servers read

Fiziksel Sunucularım

Fiziksel sunucu siparişlerini ve teslim edilmiş sunucuları listeler (durum: ordering → processing → delivered).
İstek
curl https://api.saatlik.cloud/v1/physical/servers \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{
  "servers": [
    {"id": "SBS-A1B2", "status": "delivered", "cpu": "AMD Ryzen 5 3600",
     "ram_gb": 64, "disk": "2×512 GB NVMe", "location": "Almanya",
     "ip": "1.2.3.4", "billing_mode": "hourly", "hourly_rate": 6.81, ...}
  ]
}
GET /v1/physical/servers/{id} read

Fiziksel Sunucu Detayı

Sipariş/sunucu detayı. Teslim edilmiş sunucuda rescue_user + rescue_password da döner — bunlarla SSH'lanıp işletim sistemini kurarsın.
İstek
curl https://api.saatlik.cloud/v1/physical/servers/SBS-A1B2 \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{
  "server": {"id": "SBS-A1B2", "status": "delivered", "ip": "1.2.3.4",
    "rescue_user": "root", "rescue_password": "...", ...}
}
POST /v1/physical/servers write

Fiziksel Sunucu Sipariş Et

Fiziksel sunucu sipariş eder; teslimat birkaç dakika ile birkaç saat arasında sürer, hazır olunca e-posta gelir. Ücret kesimi teslimatta başlar (saatlik modda en az min_hours saat peşin). Bakiye yetersizse sipariş kabul edilmez. Idempotency-Key zorunlu. Aynı anda en fazla 2 bekleyen sipariş. Başarıda 201.
Parametreler
AlanTipAçıklama
config string zorunlu Konfigürasyon kimliği — GET /v1/physical/configs
hostname string opsiyonel Küçük harf/rakam/nokta/tire (boşsa otomatik üretilir)
billing_mode string opsiyonel hourly (varsayılan) veya monthly (30 günlük peşin)
İstek
curl -X POST https://api.saatlik.cloud/v1/physical/servers \
  -H "Authorization: Bearer sc_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: fiziksel-001" \
  -d '{"config":"493b1a...","hostname":"db1.alanadi.com"}'
Yanıt
{
  "server": {"id": "SBS-A1B2", "status": "ordering", "hostname": "db1.alanadi.com", ...}
}
DELETE /v1/physical/servers/{id} destroy

Fiziksel Sunucuyu Sonlandır

Geri alınamaz. Teslim edilmiş sunucuyu sonlandırır; kalan dakikalar kesilir, faturalama durur. destroy yetkili anahtar gerektirir. Başarıda 202.
İstek
curl -X DELETE https://api.saatlik.cloud/v1/physical/servers/SBS-A1B2 \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{"terminate": "completed"}

rDNS

GET /v1/servers/{id}/rdns read

rDNS Kaydını Oku

Sunucu IP'sinin reverse DNS (PTR) kaydını döner. Desteklenmeyen lokasyonlarda unsupported_location hatası gelir.
İstek
curl https://api.saatlik.cloud/v1/servers/HKC.../rdns \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{"ip": "1.2.3.4", "ptr": "mail.alanadi.com"}
PUT /v1/servers/{id}/rdns write

rDNS Kaydını Güncelle

Sunucu IP'sine PTR kaydı tanımlar/günceller (mail sunucuları için önemli).
Parametreler
AlanTipAçıklama
ptr string zorunlu PTR değeri — örn. mail.alanadi.com
İstek
curl -X PUT https://api.saatlik.cloud/v1/servers/HKC.../rdns \
  -H "Authorization: Bearer sc_live_..." \
  -H "Content-Type: application/json" \
  -d '{"ptr":"mail.alanadi.com"}'
Yanıt
{"ip": "1.2.3.4", "ptr": "mail.alanadi.com"}
DELETE /v1/servers/{id}/rdns write

rDNS Kaydını Sil

PTR kaydını kaldırır.
İstek
curl -X DELETE https://api.saatlik.cloud/v1/servers/HKC.../rdns \
  -H "Authorization: Bearer sc_live_..."
Yanıt
{"ip": "1.2.3.4", "ptr": null}
Canlı Destek
saatlik.cloud destek ekibi