Netlen API v2

v2.0.0

Sunucular'ınızı, Sanal Veri Merkezi'nizi, Alan Adları'nızı, Web Hosting'lerinizi, destek taleplerinizi ve hesabınızı RESTful API ile yönetin.

Hızlı başlangıçAPI anahtarı al
https://api.netlen.com.tr/v2

Introduction

Netlen API v2, sunucu, VDC (sanal veri merkezi), domain, web hosting, destek ve hesap kaynaklarınızı programatik olarak yönetmenizi sağlar. RESTful, JSON tabanlı ve İngilizce-only bir arayüzdür.

Base URL
https://api.netlen.com.tr/v2
Kimlik doğrulama
Authorization: Bearer <api_key>
İçerik tipi
application/json
Zaman damgaları
RFC 3339 UTC (`2026-07-13T14:40:12Z`)
Para formatı
Money objesi: `{amount:"12.50", currency:"USD"}` (decimal string, USD).
Alan casing
Bütün JSON alanları snake_case.

Authentication

Her istek `Authorization: Bearer <api_key>` header'ı ile gönderilmelidir. API anahtarları panelden oluşturulur, IP allowlist zorunludur. `?api_key=` query fallback'i v2'de kaldırıldı.

Yaygın auth hataları
401AUTH_REQUIRED

Token gönderilmedi.

401AUTH_INVALID

Token geçersiz veya iptal edilmiş.

403AUTH_IP_NOT_ALLOWED

Çağıran IP anahtarın allowlist'inde değil.

403ACCOUNT_INACTIVE

Hesap askıda/kapalı.

403AUTH_SCOPE_INSUFFICIENT

Token bu işlem için gerekli scope'a sahip değil.

Request header
curl -s "https://api.netlen.com.tr/v2/servers" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
API anahtarınızı panelden API Keys sayfasından oluşturabilirsiniz. IP allowlist zorunludur.

Response envelope

Her başarılı yanıt data + meta, her hata error objesi ile döner. Üst seviye success flag'i v2'de yoktur — HTTP status kodu tek başına başarı sinyalidir.

Success (object)
json
{
  "data": { "...": "..." },
  "meta": { "request_id": "req_9f2c1a", "version": "2.0.0" }
}
Success (list)
json
{
  "data": [ { "...": "..." } ],
  "meta": {
    "request_id": "req_9f2c1a",
    "version": "2.0.0",
    "pagination": { "page": 1, "per_page": 25, "total": 1650, "total_pages": 66 }
  }
}
Error
json
{
  "error": {
    "code": "LOCATION_INVALID",
    "message": "The selected location is not available for this account.",
    "errors": [
      { "field": "location_id", "code": "INVALID", "message": "Location 999 does not exist." }
    ],
    "request_id": "req_9f2c1a",
    "doc_url": "https://api.netlen.com.tr/v2/docs/errors#LOCATION_INVALID"
  }
}

Pagination

Liste endpoint'leri sayfa-tabanlı pagination kullanır. `page` ve `per_page` query parametreleri (`per_page` max 100). Response `meta.pagination` içinde `{page, per_page, total, total_pages}` döner.

bash
GET /servers?page=1&per_page=25

Idempotency

Ücretlendirme yapan `POST` istekleri (server create, domain register, web-hosting order) `Idempotency-Key: <uuid4>` header'ı desteklemelidir. Aynı anahtar + aynı body → orijinal response tekrar döner (çift ödeme yok). Farklı body → `409 IDEMPOTENCY_KEY_CONFLICT`.

bash
Idempotency-Key: 6f1c2b90-8f7a-4e51-9c3f-1a2b3c4d5e6f

Async operations

Uzun süren işlemler (create, migrate, resize, reinstall, snapshot) 202 status ile birlikte bir `operation` objesi döner. `GET /operations/{id}` ile poll edip status'unu (`queued`/`running`/`completed`/`failed`) izleyebilirsiniz.

json
{
  "data": {
    "operation": {
      "id": "op_9f2c...",
      "type": "server.migrate",
      "status": "running",
      "resource": { "type": "server", "id": "NET10231" },
      "progress_pct": 63,
      "detail": "78/120 GB",
      "created_at": "2026-07-13T14:40:12Z",
      "updated_at": "2026-07-13T14:41:00Z"
    }
  },
  "meta": { "request_id": "req_9f2c1a", "version": "2.0.0" }
}

Rate limiting

Her response üç `RateLimit-*` header'ı taşır. Limit aşıldığında 429 `RATE_LIMITED` döner ve `Retry-After` header'ında beklenecek saniye yer alır.

bash
RateLimit-Limit: 600
RateLimit-Remaining: 597
RateLimit-Reset: 42
Retry-After: 42      (yalnızca 429 yanıtında)

Sandbox mode

Test API anahtarları (`is_test`) sandbox'a yönlendirilir. Bütün kontrat çalışır ama gerçek etki yoktur: bakiye çekilmez, provider'a çağrı gitmez, kayıt oluşmaz. Sandbox yanıtları `meta.sandbox: true` işaretini taşır. Validation çalışmaya devam eder (`422` üretilebilir).

Error catalog

Tüm hata yanıtları aynı zarfı taşır (error.code stabil ve makine-okunur; message İngilizce). Client'lar code üzerinde branch etmelidir.

HTTPCodeMessage
400REQUEST_MALFORMEDRequest body is not valid JSON.
405METHOD_NOT_ALLOWEDThis method is not allowed on this endpoint.
404ENDPOINT_NOT_FOUNDThe requested endpoint does not exist.
415UNSUPPORTED_MEDIA_TYPEContent-Type must be application/json.
401AUTH_REQUIREDAuthentication is required. Provide an "Authorization: Bearer <token>" header.
401AUTH_INVALIDThe API token is invalid or has been revoked.
403AUTH_IP_NOT_ALLOWEDThis IP address is not allowed for this API token.
403ACCOUNT_INACTIVEThis account is not active.
403AUTH_SCOPE_INSUFFICIENTThe API token does not have the required scope for this operation.
404RESOURCE_NOT_FOUNDThe requested resource was not found.
409STATE_CONFLICTThe resource is not in a state that allows this operation.
409IDEMPOTENCY_KEY_CONFLICTThis idempotency key was already used with a different request.
422VALIDATION_FAILEDOne or more request parameters are invalid.
422INSUFFICIENT_BALANCEAccount balance is insufficient for this operation.
422QUOTA_EXCEEDEDA resource quota or limit for this account has been exceeded.
429RATE_LIMITEDToo many requests. Please retry after the period in the Retry-After header.
422LOCATION_INVALIDThe selected location is not available for this account.
422OS_VERSION_INVALIDThe selected operating system version is invalid.
422INVALID_PASSWORDPassword must be at least 8 characters and include an uppercase letter, a lowercase letter, a digit and a symbol.
409HOSTNAME_IN_USEAn active server with this hostname already exists. Choose a different hostname.
422PLAN_NOT_FOUNDThe selected plan does not exist.
422CAPACITY_UNAVAILABLEThere is no capacity available to satisfy this request.
422NODE_INCOMPATIBLE_LIVE_MIGRATELive migration is not possible between these CPU vendors. Use a cold migration instead.
422SOURCE_NOT_FOUNDThe source snapshot or backup was not found.
501NOT_IMPLEMENTEDThis endpoint is not implemented yet.
500INTERNAL_ERRORAn unexpected error occurred. Contact support with the request_id.
502UPSTREAM_ERRORAn upstream provider failed to process the request.
503SERVICE_UNAVAILABLEThe service is temporarily unavailable. Please retry shortly.

Servers

Fiziksel & sanal sunucularınızı yönetin. Listeleme, oluşturma (3 mod: package / custom / snapshot'tan), güncelleme, silme, power actions (start/stop/reboot/reset_password/reinstall/resize/clone) ve alt kaynaklar: snapshots, backups, firewall, IP'ler + rDNS, metrics/traffic, operations.

The server object

idstring
Stabil public id (`NET10231`).
namestring
Hostname.
statusenum
`active` · `suspended` · `pending` · `cancelled`
power_stateenum | null
`running` · `stopped` · `starting` · `stopping` · `provisioning` · `migrating` · `error` · `unknown`. Liste yanıtlarında `null`.
osstring | null
OS slug (yalnızca detay endpoint'inde).
specsobject
`cpu_cores`, `ram_mb`, `storage_gb`.
networkobject
`ipv4`, `ipv6`, `extra_ips`.
planobject | null
`{id, name}`
billingobject
`{amount, currency, cycle, next_billing_at}`
created_atstring | null
RFC3339 UTC.
example.json
{
  "id": "NET10231",
  "name": "web01",
  "status": "active",
  "power_state": "running",
  "os": "ubuntu-24.04",
  "location_id": 3,
  "specs": { "cpu_cores": 6, "ram_mb": 16384, "storage_gb": 120 },
  "network": {
    "ipv4": { "address": "77.92.151.40", "gateway": "77.92.151.1", "netmask": "255.255.255.0", "subnet": "77.92.151.0/24" },
    "ipv6": { "address": "2a01:f900:10::40", "gateway": null, "subnet": "2a01:f900:10::/48" },
    "extra_ips": [ { "address": "77.92.151.41", "version": 4 } ]
  },
  "plan": { "id": 6, "name": "VPS-6" },
  "billing": { "amount": "39.00", "currency": "USD", "cycle": "monthly", "next_billing_at": "2026-08-13T00:00:00Z" },
  "created_at": "2026-07-13T14:40:12Z"
}
GET/servers#

List servers

Hesaba ait sunucuları döner (silinmişler hariç). Liste yanıtında `power_state` ve `os` performans için `null`; canlı değerler için detay endpoint'ini çağırın.

Query parameters
pageintoptionaldefault: 1

Sayfa numarası.

per_pageintoptionaldefault: 25

Sayfa başına öğe (max 100).

statusenumoptional

`active` · `suspended` · `pending` · `cancelled`

Yaygın hatalar
AUTH_REQUIREDAUTH_INVALIDRATE_LIMITED
curl -s "https://api.netlen.com.tr/v2/servers" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": [
    { "id": "NET10231", "name": "web01", "status": "active", "power_state": null,
      "specs": { "cpu_cores": 6, "ram_mb": 16384, "storage_gb": 120 },
      "plan": { "id": 6, "name": "VPS-6" },
      "billing": { "amount": "39.00", "currency": "USD", "cycle": "monthly", "next_billing_at": "2026-08-13T00:00:00Z" } }
  ],
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0",
            "pagination": { "page": 1, "per_page": 25, "total": 3, "total_pages": 1 } }
}
GET/servers/{id}#

Get server

Bir sunucunun tam detayını döner. `power_state`, `os` ve `specs` provider'dan canlı olarak alınır (best-effort).

Path parameters
idstringrequired

Sunucu id (`NET10231`).

Yaygın hatalar
AUTH_REQUIREDRESOURCE_NOT_FOUNDRATE_LIMITED
curl -s "https://api.netlen.com.tr/v2/servers/:id" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": { /* the server object */ },
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
POST/servers Billable Idempotency-Key#

Create server

Yeni bir sunucu oluşturur ve hesap bakiyesinden ücret keser. Üç mod: **package** (`plan_id` verin), **custom** (`cpu_cores`+`ram_mb`+`storage_gb`), **from source** (`source: {snapshot_id | backup_id}`).

Body parameters
namestringrequired

Hostname.

location_idintrequired

Konum id (NetlenVM'e route olmalı).

plan_idintoptional

`server_packages.id` (package mode).

cpu_coresintoptional

vCPU (custom mode).

ram_mbintoptional

RAM MB (custom mode).

storage_gbintoptional

Disk GB (custom mode).

os_version_idintrequired

OS versiyon id (package/custom modda zorunlu).

passwordstringrequired

≥8 karakter, büyük+küçük+rakam+sembol.

sourceobjectoptional

`{snapshot_id}` veya `{backup_id}` — from-source mode.

ipv4_countintoptionaldefault: 1

Ek IPv4 adet.

ipv6_countintoptionaldefault: 1

Ek IPv6 adet.

Yaygın hatalar
VALIDATION_FAILEDINSUFFICIENT_BALANCEPLAN_NOT_FOUNDLOCATION_INVALIDHOSTNAME_IN_USEIDEMPOTENCY_KEY_CONFLICTUPSTREAM_ERROR
curl -sX POST "https://api.netlen.com.tr/v2/servers" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json"
  -H "Idempotency-Key: 6f1c2b90-8f7a-4e51-9c3f-1a2b3c4d5e6f" \
  -d '{ "name": "web01", "location_id": 3, "plan_id": 6, "os_version_id": 4, "password": "Str0ng!pw#9" }'
Response 201
{
  "data": { /* full server object */ },
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
PATCH/servers/{id}#

Update server (rename)

Yalnızca hostname değişikliği desteklenir.

Path parameters
idstringrequired

Sunucu id.

Body parameters
namestringrequired

Yeni hostname.

Yaygın hatalar
VALIDATION_FAILEDRESOURCE_NOT_FOUND
curl -sX PATCH "https://api.netlen.com.tr/v2/servers/:id" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "web-01-renamed" }'
Response 200
{ "data": { /* updated server object */ }, "meta": { "request_id": "..." } }
DELETE/servers/{id}#

Delete server

Sunucuyu siler ve kullanılmayan sürenin ücretini iade eder.

Path parameters
idstringrequired

Sunucu id.

Yaygın hatalar
RESOURCE_NOT_FOUNDSTATE_CONFLICT
curl -sX DELETE "https://api.netlen.com.tr/v2/servers/:id" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": {
    "id": "NET10231",
    "status": "deleted",
    "refund": { "amount": "12.50", "currency": "USD" },
    "balance": { "amount": "55.00", "currency": "USD" }
  },
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
POST/servers/{id}/actions/{verb} Async#

Server actions (power / lifecycle)

`start` · `stop` · `reboot` · `reset_password` · `reinstall` · `resize` · `clone`. Async işlemler `202` + `operation` döner (poll edin).

Path parameters
idstringrequired

Sunucu id.

verbenumrequired

İşlem adı.

Body parameters
passwordstringoptional

`reset_password` için opsiyonel; verilmezse otomatik oluşturulur.

os_version_idintoptional

`reinstall` için OS id.

cpuintoptional

`resize` — yeni vCPU (custom sunucular).

ram_gbintoptional

`resize` — yeni RAM.

disk_gbintoptional

`resize` — yeni disk (sadece büyütme).

hostnamestringoptional

`clone` — yeni sunucu için hostname.

Yaygın hatalar
RESOURCE_NOT_FOUNDSTATE_CONFLICTINSUFFICIENT_BALANCEUPSTREAM_ERROR
curl -sX POST "https://api.netlen.com.tr/v2/servers/:id/actions/:verb" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ /* body */ }'
Response 202
{
  "data": {
    "operation": {
      "id": "op_9f2c...",
      "type": "server.reboot",
      "status": "queued",
      "resource": { "type": "server", "id": "NET10231" }
    }
  },
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
GET/servers/{id}/snapshots#

List snapshots

Sunucuya ait snapshot'ları listeler.

Path parameters
idstringrequired

Sunucu id.

curl -s "https://api.netlen.com.tr/v2/servers/:id/snapshots" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": [
    { "id": 8123, "name": "pre-upgrade", "status": "available", "size_gb": 3.4, "created_at": "2026-07-01T09:00:00Z" }
  ],
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
POST/servers/{id}/snapshots Billable#

Create snapshot

Snapshot oluşturur — aylık koruma ücretinden ilk ay şimdi tahsil edilir. Silindiğinde faturalandırma durur.

Path parameters
idstringrequired

Sunucu id.

Body parameters
namestringrequired

Snapshot adı.

Yaygın hatalar
VALIDATION_FAILEDINSUFFICIENT_BALANCESTATE_CONFLICTUPSTREAM_ERROR
curl -sX POST "https://api.netlen.com.tr/v2/servers/:id/snapshots" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "pre-upgrade" }'
Response 201
{ "data": { "id": 8124, "name": "pre-upgrade", "status": "creating", "created_at": "2026-07-13T12:00:00Z" }, "meta": { "request_id": "..." } }
GET/servers/{id}/firewall/rules#

List firewall rules

Sunucunun stateful firewall kurallarını listeler (position asc sırada).

Path parameters
idstringrequired

Sunucu id.

curl -s "https://api.netlen.com.tr/v2/servers/:id/firewall/rules" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/servers/{id}/ips#

List server IPs

Sunucuya atanmış IPv4 ve IPv6 adreslerini listeler.

Path parameters
idstringrequired

Sunucu id.

curl -s "https://api.netlen.com.tr/v2/servers/:id/ips" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
POST/servers/{id}/ips Billable#

Purchase extra IP

Ek IP satın alır (billable). Body: `{version: 4|6}`. Aylık faturaya eklenir.

Path parameters
idstringrequired

Sunucu id.

Body parameters
versionintrequired

`4` veya `6`.

Yaygın hatalar
INSUFFICIENT_BALANCECAPACITY_UNAVAILABLE
curl -sX POST "https://api.netlen.com.tr/v2/servers/:id/ips" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "version": 4 }'
GET/servers/{id}/console#

Get console URL (VNC)

Kısa ömürlü, tek kullanımlık VNC/console viewer URL'i döner. Ham provider WebSocket'i dışarıya açılmaz — broker üzerinden gelir.

Path parameters
idstringrequired

Sunucu id.

Yaygın hatalar
RESOURCE_NOT_FOUNDSTATE_CONFLICTUPSTREAM_ERROR
curl -s "https://api.netlen.com.tr/v2/servers/:id/console" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": {
    "viewer_url": "https://console.netlen.com.tr/vnc/...",
    "expires_at": "2026-07-13T15:00:00Z",
    "expires_in": 300
  },
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
GET/servers/{id}/metrics#

Server metrics

CPU / memory / disk utilization.

Path parameters
idstringrequired

Sunucu id.

curl -s "https://api.netlen.com.tr/v2/servers/:id/metrics" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/servers/{id}/traffic#

Server traffic

Aylık in/out trafik bytes + kota bilgisi.

Path parameters
idstringrequired

Sunucu id.

curl -s "https://api.netlen.com.tr/v2/servers/:id/traffic" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/operations/{id}#

Get operation

Async bir operation'ın durumunu döner. `status`: `queued` · `running` · `completed` · `failed`.

Path parameters
idstringrequired

Operation id (`op_...`).

curl -s "https://api.netlen.com.tr/v2/operations/:id" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"

VDC (Virtual Data Center)

Bir **VDC**, satın aldığınız CPU/RAM/disk/IP/bandwidth kaynak havuzudur. Bu havuzdan bireysel VM'ler oluşturursunuz. Havuz durumu, VM listesi/detayı, actions (start/stop/reboot/reinstall/reset_password/resize), snapshots (ücretsiz).

The vdc_vm object

Objenin alan listesi için endpoint response örneklerine bakın.

example.json
{
  "id": "VDC-00042",
  "name": "app-node-1",
  "status": "active",
  "power_state": "running",
  "os": "ubuntu-24.04",
  "specs": { "cpu_cores": 4, "ram_mb": 8192, "storage_gb": 80 },
  "primary_ip": "77.92.151.60",
  "primary_ipv6": "2a01:f900:10::60",
  "created_at": "2026-07-13T14:40:12Z"
}
GET/vdc/resources#

VDC resource pool

Havuzun toplam / kullanılan / kalan miktarlarını döner. Her kova `{total, used, available}`.

curl -s "https://api.netlen.com.tr/v2/vdc/resources" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": {
    "has_pool": true,
    "cpu":            { "total": 16,    "used": 8,    "available": 8    },
    "ram_mb":         { "total": 32768, "used": 16384,"available": 16384 },
    "storage_gb":     { "total": 500,   "used": 240,  "available": 260  },
    "ipv4":           { "total": 8,     "used": 3,    "available": 5    },
    "ipv6":           { "total": 4,     "used": 1,    "available": 3    },
    "bandwidth_mbit": { "total": 1000,  "used": 400,  "available": 600  }
  },
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
GET/vdc/vms#

List VDC VMs

Havuzdaki VM'leri sayfalı listeler.

Query parameters
pageintoptionaldefault: 1

Sayfa numarası.

per_pageintoptionaldefault: 25

Sayfa başına öğe (max 100).

curl -s "https://api.netlen.com.tr/v2/vdc/vms" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/vdc/vms/{id}#

Get VDC VM

Bir VM'nin detayı; NetlenVM VM'leri için `power_state`, `os`, `specs` canlı çekilir.

Path parameters
idstringrequired

VM id (`VDC-00042`).

curl -s "https://api.netlen.com.tr/v2/vdc/vms/:id" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/vdc/vms/{id}/usage#

VDC VM usage

CPU, memory, disk utilization (son ölçüm).

Path parameters
idstringrequired

VM id.

curl -s "https://api.netlen.com.tr/v2/vdc/vms/:id/usage" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
POST/vdc/vms/{id}/actions/{verb} Async#

VDC VM actions

`start` · `stop` · `reboot` · `reinstall` · `reset_password` · `resize`. Resize havuzdan delta kadar kaynak tüketir (per-VM ücret yok).

Path parameters
idstringrequired

VM id.

verbenumrequired

İşlem.

curl -sX POST "https://api.netlen.com.tr/v2/vdc/vms/:id/actions/:verb" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/vdc/vms/{id}/snapshots#

VDC snapshots (free)

NetlenVM-backed VM'ler için snapshot listesi. VDC'de snapshot ücretsizdir.

Path parameters
idstringrequired

VM id.

curl -s "https://api.netlen.com.tr/v2/vdc/vms/:id/snapshots" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"

Domains

Domain kayıt, transfer, yenileme, availability check, TLD pricing, nameserver yönetimi, transfer lock, WHOIS privacy, EPP/auth-code. Bulk register/transfer/renew desteği (max 100 domain/istek).

The domain object (detail)

Objenin alan listesi için endpoint response örneklerine bakın.

example.json
{
  "id": "4821",
  "domain": "example.com",
  "status": "active",
  "auto_renew": true,
  "registered_at": "2025-03-11T00:00:00Z",
  "expires_at": "2027-03-11T00:00:00Z",
  "nameservers": ["ns1.netlen.com.tr", "ns2.netlen.com.tr"],
  "tld": ".com",
  "service_id": "DOM-A1B2C",
  "registrar": "ResellerClub",
  "transfer_lock": true,
  "whois_privacy": false,
  "registration_years": 2,
  "billing": {
    "register": { "amount": "12.00", "currency": "USD" },
    "renewal":  { "amount": "14.00", "currency": "USD" }
  }
}
GET/domains#

List domains

Hesabınıza ait domainleri sayfalı listeler.

Query parameters
pageintoptionaldefault: 1

Sayfa.

per_pageintoptionaldefault: 25

Max 100.

statusstringoptional

`active`, `transfer_pending`, `cancelled`, ...

curl -s "https://api.netlen.com.tr/v2/domains" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/domains/{id}#

Get domain

Bir domain'in tam detayı (nameservers, lock, WHOIS privacy, billing).

Path parameters
idstringrequired

Domain id.

curl -s "https://api.netlen.com.tr/v2/domains/:id" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/domains/check#

Check availability

Registrar'da bir domain'in müsaitliğini kontrol eder. Ücretsiz. IDN kabul, punycode'a normalize edilir.

Query parameters
domainstringrequired

Domain adı (`example.com`).

Yaygın hatalar
VALIDATION_FAILEDUPSTREAM_ERROR
curl -s "https://api.netlen.com.tr/v2/domains/check" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": { "domain": "example.com", "tld": ".com", "available": true },
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
GET/domains/pricing#

TLD pricing catalog

TLD başına register/renew/transfer fiyatları. `tld` verirseniz tek TLD; vermezseniz sayfalı katalog.

Query parameters
tldstringoptional

Örn. `com` veya `.com`.

pageintoptionaldefault: 1

Katalog sayfası.

per_pageintoptionaldefault: 50

Max 200.

curl -s "https://api.netlen.com.tr/v2/domains/pricing" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": {
    "tld": ".com",
    "register": { "amount": "12.00", "currency": "USD" },
    "renewal":  { "amount": "14.00", "currency": "USD" },
    "transfer": { "amount": "12.00", "currency": "USD" },
    "supports_whois_privacy": true,
    "years_min": 1,
    "years_max": 10
  },
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
POST/domains Billable Idempotency-Key#

Register domain

Yeni domain kaydı. Balance yeterli olmalı. Bulk için `/domains/bulk/register` kullanın.

Body parameters
domainstringrequired

Domain adı.

yearsintrequired

Kayıt süresi (yıl).

nameserversstring[]optional

En az 2 hostname.

whois_privacybooloptional

WHOIS privacy açık/kapalı.

auto_renewbooloptional

Otomatik yenileme.

contactobjectoptional

Contact info (bazı TLD'ler için gerekli).

Yaygın hatalar
VALIDATION_FAILEDINSUFFICIENT_BALANCEUPSTREAM_ERROR
curl -sX POST "https://api.netlen.com.tr/v2/domains" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json"
  -H "Idempotency-Key: 6f1c2b90-8f7a-4e51-9c3f-1a2b3c4d5e6f" \
  -d '{ "domain": "example.com", "years": 1, "nameservers": ["ns1.netlen.com.tr", "ns2.netlen.com.tr"], "whois_privacy": true, "auto_renew": true }'
POST/domains/transfer Billable Idempotency-Key#

Transfer domain

Başka registrardan transfer. `auth_code` (EPP kodu) zorunlu.

Body parameters
domainstringrequired

Domain adı.

auth_codestringrequired

EPP / auth kodu.

yearsintoptional

Yenileme yılı (bazı TLD için opsiyonel).

curl -sX POST "https://api.netlen.com.tr/v2/domains/transfer" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json"
  -H "Idempotency-Key: 6f1c2b90-8f7a-4e51-9c3f-1a2b3c4d5e6f" \
  -d '{ "domain": "example.com", "auth_code": "aBc123!xyz" }'
POST/domains/{id}/renew Billable Idempotency-Key#

Renew domain

Domain'i belirtilen yıl kadar yeniler.

Path parameters
idstringrequired

Domain id.

Body parameters
yearsintoptionaldefault: 1

Yenileme yılı.

curl -sX POST "https://api.netlen.com.tr/v2/domains/:id/renew" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json"
  -H "Idempotency-Key: 6f1c2b90-8f7a-4e51-9c3f-1a2b3c4d5e6f" \
  -d '{ /* body */ }'
POST/domains/bulk/{action} Billable#

Bulk register / transfer / renew

Bulk işlem (max 100 domain/istek). `action`: `register` · `transfer` · `renew`. Response `{ok_count, fail_count, results[]}` — partial success.

Path parameters
actionenumrequired

`register` · `transfer` · `renew`

Body parameters
domainsarrayrequired

Domain adları (string) veya obje listesi.

yearsintoptional

Body-level default (item'da yoksa).

curl -sX POST "https://api.netlen.com.tr/v2/domains/bulk/:action" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ /* body */ }'
GET/domains/{id}/nameservers#

Get nameservers

Domain'in kayıtlı NS'lerini döner.

Path parameters
idstringrequired

Domain id.

curl -s "https://api.netlen.com.tr/v2/domains/:id/nameservers" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
PUT/domains/{id}/nameservers#

Set nameservers

NS'leri registrar'da günceller (tam set gönderilir; en az 2). Ücretsiz.

Path parameters
idstringrequired

Domain id.

Body parameters
nameserversstring[]required

≥2 hostname.

curl -sX PUT "https://api.netlen.com.tr/v2/domains/:id/nameservers" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "nameservers": ["ns1.netlen.com.tr", "ns2.netlen.com.tr"] }'
PUT/domains/{id}/lock#

Transfer lock

Registrar transfer lock (hırsızlık koruması).

Path parameters
idstringrequired

Domain id.

Body parameters
enabledboolrequired

`true` = kilitle.

curl -sX PUT "https://api.netlen.com.tr/v2/domains/:id/lock" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ /* body */ }'
PUT/domains/{id}/whois-privacy#

WHOIS privacy

WHOIS privacy'yi açar/kapatır (destekleyen TLD'ler).

Path parameters
idstringrequired

Domain id.

Body parameters
enabledboolrequired

`true` = privacy açık.

curl -sX PUT "https://api.netlen.com.tr/v2/domains/:id/whois-privacy" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ /* body */ }'
GET/domains/{id}/auth-code#

Get EPP / auth code

Transfer için gerekli EPP kodunu döner (kayıtlı olan veya registrar'dan yeni istenmiş).

Path parameters
idstringrequired

Domain id.

curl -s "https://api.netlen.com.tr/v2/domains/:id/auth-code" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{ "data": { "auth_code": "aBc123!xyz" }, "meta": { "request_id": "..." } }

Web Hosting

cPanel bazlı web hosting hesaplarınızı yönetin: list, get, order, renew, cancel + tek kullanımlık cPanel SSO login.

The web_hosting object

Objenin alan listesi için endpoint response örneklerine bakın.

example.json
{
  "id": "WH-1029",
  "domain": "example.com",
  "status": "active",
  "plan": { "id": 5, "name": "Business" },
  "server": { "hostname": "web12.netlen.com.tr" },
  "disk_usage": { "used_mb": null, "quota_mb": 10240 },
  "billing": {
    "amount": "12.00",
    "currency": "USD",
    "cycle": "monthly",
    "next_billing_at": "2026-08-13T00:00:00Z"
  },
  "created_at": "2026-07-13T09:20:11Z"
}
GET/web-hosting#

List hosting accounts

Hesaba ait web hosting servislerini listeler.

Query parameters
pageintoptionaldefault: 1

Sayfa.

per_pageintoptionaldefault: 25

Max 100.

statusstringoptional

`active` · `suspended` · `cancelled`

curl -s "https://api.netlen.com.tr/v2/web-hosting" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/web-hosting/{id}#

Get hosting account

Bir hosting hesabının detayı.

Path parameters
idstringrequired

Servis kodu (`WH-1029`).

curl -s "https://api.netlen.com.tr/v2/web-hosting/:id" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
POST/web-hosting Billable#

Order hosting

Web hosting paketi satın alır ve cPanel hesabını provisiyon eder. Provision başarısız olursa bakiye çekilmez.

Body parameters
domainstringrequired

Birincil domain.

package_idintrequired

Aktif `web_hosting_packages.id`.

billing_cycleenumoptional

`monthly` (default) · `yearly`

Yaygın hatalar
VALIDATION_FAILEDSTATE_CONFLICTINSUFFICIENT_BALANCESERVICE_UNAVAILABLEUPSTREAM_ERROR
curl -sX POST "https://api.netlen.com.tr/v2/web-hosting" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "domain": "example.com", "package_id": 5, "billing_cycle": "monthly" }'
POST/web-hosting/{id}/renew Billable#

Renew hosting

Aktif hesabı bir döngü uzatır. Body opsiyonel.

Path parameters
idstringrequired

Servis kodu.

Yaygın hatalar
RESOURCE_NOT_FOUNDSTATE_CONFLICTINSUFFICIENT_BALANCE
curl -sX POST "https://api.netlen.com.tr/v2/web-hosting/:id/renew" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
POST/web-hosting/{id}/cancel#

Cancel hosting

Hesabı iptal eder. `refund: true` isteğinde tam iade verilir.

Path parameters
idstringrequired

Servis kodu.

Body parameters
refundbooloptionaldefault: false

İade verilsin mi.

send_emailbooloptionaldefault: false

İptal e-postası.

reasonstringoptional

İptal nedeni.

curl -sX POST "https://api.netlen.com.tr/v2/web-hosting/:id/cancel" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ /* body */ }'
GET/web-hosting/{id}/login#

cPanel SSO login

Kısa ömürlü, tek kullanımlık cPanel SSO URL'i döner.

Path parameters
idstringrequired

Servis kodu.

curl -s "https://api.netlen.com.tr/v2/web-hosting/:id/login" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": {
    "id": "WH12345678",
    "username": "example1",
    "login_url": "https://web12.netlen.com.tr:2083/cpsess.../login/?session=...",
    "note": "Short-lived, single-use cPanel SSO URL — redirect immediately."
  },
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}

Catalog

Sipariş için gerekli katalog kaynakları: plans (server paketleri), packages (aynı katalog, sade view), operating systems, locations. Yalnızca okuma.

GET/plans#

List plans

Server paketleri (`bandwidth_gb` dahil). `id`'yi `POST /servers`'a `plan_id` olarak verin.

Query parameters
pageintoptionaldefault: 1

Sayfa.

per_pageintoptionaldefault: 25

Max 100.

curl -s "https://api.netlen.com.tr/v2/plans" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": [
    { "id": 6, "name": "VPS-6",
      "specs": { "cpu_cores": 6, "ram_mb": 16384, "storage_gb": 120, "bandwidth_gb": 8000 },
      "price": { "amount": "39.00", "currency": "USD" }, "available": true }
  ],
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
GET/plans/{id}#

Get plan

Tek bir server planının detayı.

Path parameters
idintrequired

Plan id.

curl -s "https://api.netlen.com.tr/v2/plans/:id" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/packages#

List packages

Plans ile aynı katalog, `bandwidth_gb` olmayan sade view.

curl -s "https://api.netlen.com.tr/v2/packages" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/operating-systems#

List operating systems

Kurulabilir OS versiyonlarının flat listesi. `id` = `os_version_id`.

curl -s "https://api.netlen.com.tr/v2/operating-systems" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/locations#

List locations

Sunucu oluşturma için kullanılabilir lokasyonlar.

curl -s "https://api.netlen.com.tr/v2/locations" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"

Billing

Hesap bakiyesi ve balance ledger sorgulama. Bakiye yükleme + fatura yönetimi panelden yapılır (`501 NOT_IMPLEMENTED`). Bütün para değerleri money objesi, USD.

GET/billing/balance#

Get balance

Hesabın güncel bakiyesi.

curl -s "https://api.netlen.com.tr/v2/billing/balance" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": {
    "balance": { "amount": "42.50", "currency": "USD" },
    "currency": "USD"
  },
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
GET/billing/transactions#

List transactions

Balance transaction'ları newest-first listeler.

Query parameters
pageintoptionaldefault: 1

Sayfa.

per_pageintoptionaldefault: 25

Max 100.

typestringoptional

`deposit` · `withdraw` · `refund`

curl -s "https://api.netlen.com.tr/v2/billing/transactions" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": [
    { "id": 5821, "type": "deposit",
      "amount": { "amount": "50.00", "currency": "USD" },
      "description": "Balance top-up (Stripe)",
      "status": "success",
      "created_at": "2026-07-13T14:40:12Z" }
  ],
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}

Account

Hesap profili, API anahtarları metadata'sı ve IP allowlist okuma. Yazma işlemleri panel-only (`501 NOT_IMPLEMENTED`). Secret'lar (key değeri, hash, token) döndürülmez.

GET/account#

Get profile

Kimlik doğrulanmış müşterinin profil bilgisi.

curl -s "https://api.netlen.com.tr/v2/account" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": {
    "id": "NET10231",
    "email": "ada@example.com",
    "name": "Ada Lovelace",
    "company": "Analytical Engines Ltd.",
    "phone": "+90 5551234567",
    "country": "TR",
    "status": "active",
    "balance": { "amount": "42.50", "currency": "USD" },
    "created_at": "2026-01-04T09:12:00Z"
  },
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
GET/account/api-keys#

List API keys

API anahtarları metadata'sı (key değeri dönmez).

curl -s "https://api.netlen.com.tr/v2/account/api-keys" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/account/ip-allowlist#

List IP allowlist

Çağıran API anahtarına ait IP allowlist.

curl -s "https://api.netlen.com.tr/v2/account/ip-allowlist" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"

Support Tickets

Destek talepleri: liste, detay, oluşturma, yanıt ekleme, kapatma. `GET /departments` ile aktif departmanlar. Her talep customer'a scope'lu — yalnızca kendi taleplerinizi görürsünüz.

GET/tickets#

List tickets

Talepleri newest-first sayfalar. Silinmişler dahil değil.

Query parameters
pageintoptionaldefault: 1

Sayfa.

per_pageintoptionaldefault: 25

Max 100.

statusenumoptional

`open` · `answered` · `customer_reply` · `in_progress` · `pending` · `closed`

curl -s "https://api.netlen.com.tr/v2/tickets" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/tickets/{id}#

Get ticket

Ticket detayı + full mesaj thread'i (internal notlar hariç).

Path parameters
idstringrequired

Ticket numarası (`T000123`).

curl -s "https://api.netlen.com.tr/v2/tickets/:id" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
POST/tickets#

Create ticket

Yeni destek talebi açar.

Body parameters
subjectstringrequired

En az 1 harf içermeli.

messagestringrequired

En az 25 karakter ve 15 harf.

department_idintoptional

Aktif bir departman id'si.

priorityenumoptionaldefault: medium

`low` · `medium` · `high` · `urgent`

Yaygın hatalar
VALIDATION_FAILED
curl -sX POST "https://api.netlen.com.tr/v2/tickets" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "subject": "Cannot reach my server over SSH", "department_id": 2, "priority": "high", "message": "My server stopped responding over SSH this morning and I cannot log in." }'
POST/tickets/{id}/replies#

Reply to ticket

Ticket'a customer yanıtı ekler. Status `customer_reply` olur.

Path parameters
idstringrequired

Ticket numarası.

Body parameters
messagestringrequired

En az 25 karakter ve 15 harf.

Yaygın hatalar
RESOURCE_NOT_FOUNDSTATE_CONFLICTVALIDATION_FAILED
curl -sX POST "https://api.netlen.com.tr/v2/tickets/:id/replies" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ /* body */ }'
POST/tickets/{id}/close#

Close ticket

Ticket'ı kapatır. Zaten kapalı ise `409 STATE_CONFLICT`.

Path parameters
idstringrequired

Ticket numarası.

curl -sX POST "https://api.netlen.com.tr/v2/tickets/:id/close" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/departments#

List departments

Aktif destek departmanları.

curl -s "https://api.netlen.com.tr/v2/departments" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"

Sub-users

Hesabınıza bağlı ek loginler. Liste, detay, update (profile + status), delete, permission read/replace. Create (invite) panelden yapılır (`501 NOT_IMPLEMENTED`). Password/token döndürülmez.

GET/sub-users#

List sub-users

Sub-user'ları sayfalı listeler.

Query parameters
pageintoptionaldefault: 1

Sayfa.

per_pageintoptionaldefault: 25

Max 100.

statusenumoptional

`pending` · `active` · `inactive`

curl -s "https://api.netlen.com.tr/v2/sub-users" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/sub-users/{id}#

Get sub-user

Sub-user detayı + permission keys.

Path parameters
idintrequired

Sub-user id.

curl -s "https://api.netlen.com.tr/v2/sub-users/:id" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
PATCH/sub-users/{id}#

Update sub-user

Profile fields ve/veya status güncellemesi. `email`/`password` bu endpoint'te yazılamaz.

Path parameters
idintrequired

Sub-user id.

Body parameters
first_namestringoptional

Boş olmayan.

last_namestringoptional

Boş olmayan.

phonestringoptional

Boş olmayan.

phone_country_codestringoptional

Örn. `+1`.

statusenumoptional

`active` · `inactive`

curl -sX PATCH "https://api.netlen.com.tr/v2/sub-users/:id" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ /* body */ }'
DELETE/sub-users/{id}#

Delete sub-user

Sub-user'ı ve tüm permission atamalarını siler.

Path parameters
idintrequired

Sub-user id.

curl -sX DELETE "https://api.netlen.com.tr/v2/sub-users/:id" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
GET/sub-users/{id}/permissions#

Get permissions

Sub-user'ın permission key listesi.

Path parameters
idintrequired

Sub-user id.

curl -s "https://api.netlen.com.tr/v2/sub-users/:id/permissions" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
PUT/sub-users/{id}/permissions#

Replace permissions

Permission setini tamamen değiştirir. `[]` göndererek tümünü kaldırabilirsiniz.

Path parameters
idintrequired

Sub-user id.

Body parameters
permissionsstring[]required

Permission key'leri.

curl -sX PUT "https://api.netlen.com.tr/v2/sub-users/:id/permissions" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "permissions": ["servers.view", "servers.manage", "invoices.view"] }'

SSH Keys

Hesap-wide SSH public key'leri. Sunucu oluştururken seçilirse yeni VM'e kurulur.

The ssh_key object

Objenin alan listesi için endpoint response örneklerine bakın.

example.json
{
  "id": 12,
  "name": "laptop",
  "public_key": "ssh-ed25519 AAAA...",
  "public_key_preview": "ssh-ed25519 AAAA...",
  "created_at": "2026-07-13T14:40:12Z"
}
GET/ssh-keys#

List SSH keys

Hesabın tüm public key'lerini listeler.

curl -s "https://api.netlen.com.tr/v2/ssh-keys" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
POST/ssh-keys#

Add SSH key

Hesaba yeni public key ekler.

Body parameters
namestringrequired

Key etiketi.

public_keystringrequired

Public key (`ssh-ed25519 ...`).

curl -sX POST "https://api.netlen.com.tr/v2/ssh-keys" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "laptop", "public_key": "ssh-ed25519 AAAA..." }'
DELETE/ssh-keys/{id}#

Remove SSH key

Key'i panelden siler (daha önce kurulduğu sunuculardan silmez).

Path parameters
idintrequired

Key id.

curl -sX DELETE "https://api.netlen.com.tr/v2/ssh-keys/:id" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"

Reseller

Bayi programı durumu ve indirim ladder'ı. Read-only — bayilik ve indirim yapılandırması admin tarafından yönetilir. Aktif server sayınıza göre indirim tier'ınız hesaplanır.

GET/reseller#

Get reseller status

Bayi statüsü, aktif indirim yüzdesi, aktif server sayısı ve mevcut tier.

curl -s "https://api.netlen.com.tr/v2/reseller" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": {
    "is_reseller": true,
    "discount_percentage": 7.5,
    "discount_type": "standard",
    "active_server_count": 12,
    "current_tier": {
      "min_servers": 11,
      "max_servers": 20,
      "discount_percentage": 7.5
    }
  },
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
GET/reseller/tiers#

Get tier ladder

Server sayısı bandına göre indirim ladder'ı. Müşterinin şu anki tier'ı `is_current: true`.

curl -s "https://api.netlen.com.tr/v2/reseller/tiers" \
  -H "Authorization: Bearer $NETLEN_API_TOKEN"
Response 200
{
  "data": {
    "is_reseller": true,
    "discount_type": "standard",
    "active_server_count": 12,
    "tiers": [
      { "min_servers": 1,  "max_servers": 5,    "discount_percentage": 2.5, "is_current": false },
      { "min_servers": 6,  "max_servers": 10,   "discount_percentage": 5,   "is_current": false },
      { "min_servers": 11, "max_servers": 20,   "discount_percentage": 7.5, "is_current": true  },
      { "min_servers": 21, "max_servers": null, "discount_percentage": 10,  "is_current": false }
    ]
  },
  "meta": { "request_id": "req_9f2c1a3b", "version": "2.0.0" }
}
Sorularınız için iletişim · API v1 (legacy)