Mağazanızın ürün, stok, fiyat, sipariş ve kargo verisini kendi yazılımınıza bağlamak için
REST API ve olay bildirimleri (webhook). Muhasebe, ERP, depo ve pazaryeri entegratörleri
için tasarlandı.
Örneklerdeki magazaniz.com yerine mağazanızın alan adını yazın.
Alan adı bağlı değilse mağazanızın SUSOFTECH alt alan adını kullanın.
Kimlik doğrulama
Her istekte anahtarınızı X-API-KEY başlığında gönderin.
Authorization: Bearer ve adres satırında (query string) anahtar
desteklenmez.
Özellik
Davranış
Anahtar biçimi
48 karakterlik küçük harf onaltılık dizi, ön ek yok.
Mağaza kapsamı
Anahtar oluşturulduğu mağazaya bağlıdır; yalnız o mağazanın verisini görür ve değiştirir.
İzinli IP'ler
İsteğe bağlı, virgülle ayrılmış liste. Tam eşleşme aranır; CIDR ve joker karakter desteklenmez. Boş bırakılırsa her IP kabul edilir.
Son kullanma
İsteğe bağlı tarih. Seçilen günün 00:00'ından itibaren anahtar reddedilir.
İptal
İptal edilen anahtar kalıcı olarak kapanır, yeniden açılamaz. Yeni anahtar oluşturun.
İstek imzalama
Gelen istekler için imza gerekmez; güvenlik anahtar + HTTPS + isteğe bağlı IP listesiyle sağlanır.
Anahtarı tarayıcıda kullanmayın. API, tarayıcıdan yapılan çapraz alan
isteklerine (CORS) izin vermez. Çağrıları kendi sunucunuzdan yapın; anahtarı ön yüz koduna koymayın.
Yetki kapsamları
Her anahtar yalnız kendisine verilen kapsamlardaki uçları çağırabilir. Hiç kapsam seçilmezse
anahtar tüm okuma izinlerini alır, hiçbir yazma izni almaz.
Kapsam
Ne sağlar
Tür
products:read
Ürün listesi ve ürün detayı
Okuma
products:write
Ürün fiyatını güncelleme
Yazma
categories:read
Kategoriler
Okuma
brands:read
Markalar
Okuma
orders:read
Sipariş listesi ve detayı
Okuma
orders:write
Sipariş durumu, kargo firması ve takip numarası güncelleme
Kapsamı olmayan bir uç çağrılırsa 403 döner ve gereken kapsam
errors.required_scope alanında belirtilir.
İstek ve yanıt biçimi
Yanıtlar her zaman JSON'dur (Content-Type: application/json; charset=utf-8).
Yazma isteklerinde gövdeyi JSON olarak gönderin ve Content-Type: application/json
başlığını ekleyin. Gövde boşsa form verisi
(application/x-www-form-urlencoded) de okunur.
Doğrulama hatası; alan bazında ayrıntı errors içinde
Validation failed
429
Hız limiti aşıldı
Rate limit aşıldı (dakikada 120 istek).
500
Beklenmeyen sunucu hatası
Internal server error
Var olmayan bir adres (ör. yazım hatalı uç) JSON yerine HTML hata sayfası döndürür.
İstemcinizde yanıt gövdesini çözmeden önce Content-Type başlığını kontrol edin.
Hız limiti
Her anahtarın dakikalık istek limiti vardır (varsayılan 120; yönetim ekranından
0–100.000 arası ayarlanır, 0 = sınırsız). Pencere kayan 60 saniyedir.
Başlık
Anlamı
X-RateLimit-Limit
Dakikalık limit
X-RateLimit-Remaining
Bu pencerede kalan istek
Retry-After: 60
Yalnız 429 yanıtında; bu kadar saniye bekleyin
Reddedilen (429) istekler de pencereye sayılır. Limite takıldığınızda yeniden denemeden önce
Retry-After kadar bekleyin; aralıksız tekrar denemek bekleme süresini uzatır.
Ürünler
GET/api/v1/productsKapsam products:read
Ürünleri sayfalı listeler. Varsayılan sıralama en yeni ürün önce.
Ürünün satış fiyatını ve isteğe bağlı olarak üstü çizili fiyatını günceller. Değerler iki
basamağa yuvarlanır. Yanıtta ürünün güncel detayı döner ve
product.price_changed webhook'u gönderilir.
Alan
Tür
Kural
price
sayı
Zorunlu, 0 veya üstü
compare_price
sayı
İsteğe bağlı, 0 veya üstü. null göndermek mevcut değeri silmez; değiştirmek için yeni değer gönderin.
Varyant fiyatları bu uçla değişmez; varyant fiyatı ürün fiyatı +
price_diff olarak hesaplanır.
Kategoriler ve markalar
GET/api/v1/categoriesKapsam categories:read
Aktif kategorilerin tamamı (sayfasız), sıralama sırasına göre. Alanlar:
id, parent_id, slug, name, image, sort_order, status, product_count.
Ağaç yapısını parent_id ile kurun.
GET/api/v1/categories/{id}Kapsam categories:read
Tek kategori: listedeki alanlara ek description, meta_title, meta_description,
created_at. Pasif kategoriler de döner.
GET/api/v1/brandsKapsam brands:read
Aktif markaların tamamı (sayfasız). Alanlar:
id, name, slug, image, status, sort_order, product_count.
GET/api/v1/brands/{id}Kapsam brands:read
Tek marka: id, name, slug, image, status, sort_order, created_at.
Yeni siparişleri anında almak için order.created
webhook'una abone olun; kaçırılanları tamamlamak için bu ucu belirli aralıklarla
date_from ile sorgulayın.
Değişiklik yoksa 200 ve "Değişiklik yok." döner; aynı isteği tekrar
göndermek güvenlidir. Durum değiştiyse order.status_changed webhook'u gönderilir.
Yalnız kayıt güncellenir. Bu uç iade/para hareketi yapmaz, stoğu geri eklemez,
müşteriye bildirim göndermez, kargo etiketi oluşturmaz ve kargoya veriliş/teslim tarihlerini
doldurmaz. Durum geçişleri sınırlandırılmaz; iş akışınıza uygun sırayı istemcinizde uygulayın.
Mağazanın kargo entegrasyonuyla gerçek bir kargo gönderisi ve barkod oluşturur;
kargo ücreti mağaza cüzdanından çekilir. Gövde isteğe bağlıdır:
{"carrier_code": "…"} ile kargo firması seçilir; boşsa siparişin tercih ettiği,
o da yoksa mağazanın ana kargo firması kullanılır.
Siparişin zaten aktif bir gönderisi varsa yeni gönderi oluşturulmaz, mevcut gönderi döner
(tekrar denemek güvenlidir). Dijital ürün siparişlerinde gönderi oluşturulmaz ve yanıtta
"skipped": true gelir. Başarıda shipment.created webhook'u gönderilir.
Hata kodu (errors.error)
HTTP
Anlamı
order_not_found
404
Sipariş bu mağazada yok
no_active_carrier
409
Mağazada aktif kargo entegrasyonu yok
order_cancelled
409
İptal/iade edilmiş siparişe gönderi oluşturulamaz
address_incomplete
422
Teslimat adresinde şehir/adres eksik
no_rate_available
422
Bu gönderi için fiyat bulunamadı
wallet_hold_failed
422
Cüzdan bakiyesi yetersiz ya da ücret ayrılamadı
invalid_package: …
422
Paket ölçü/ağırlık bilgisi geçersiz
diğer
422
Kargo gönderisi oluşturulamadı
Stok
GET/api/v1/stockKapsam stock:read
Ürün stoklarını sayfalı listeler. Parametreler: state (in_stock ·
low_stock · out_of_stock), q (ad, SKU, barkod),
page, per_page.
Yanıt: {"product_id":128,"variant_id":904,"stock":25}. Her başarılı çağrıda
stock.changed webhook'u gönderilir.
Not: API ile yapılan stok güncellemesi mağazanın stok hareketleri raporuna
satır eklemez ve düşük stok uyarısı tetiklemez. Değişiklikler yönetim panelindeki
API & Webhook › Aktivite denetim izinde görünür.
Webhook'lar
Webhook, seçtiğiniz olay gerçekleştiğinde mağazanın sizin adresinize gönderdiği HTTPS
POST isteğidir. Yönetim panelinde API & Webhook › Webhook'lar
sekmesinden HTTPS adresinizi ve olayları seçerek eklenir. Oluştururken gösterilen
imza anahtarını (secret) kopyalayın; bir daha gösterilmez.
Olaylar
Olay
Ne zaman
data alanları
order.created
Yeni sipariş: vitrin, yönetim paneli ve pazaryerinden aktarılan siparişler. Kartlı ödemede ödeme onaylandığında, diğer yöntemlerde sipariş oluştuğunda. Sipariş başına bir kez.
Panelde Test gönder düğmesine basıldığında (abonelikten bağımsız)
message, webhook_id
stock.changed içindeki reason: order_sale (satış),
admin (ürün düzenleme), api, order_cancel (iptal iadesi),
order_return (iade), ya da stok hareketi türü (ör. manual_in,
manual_out). Olaylar yalnız değer gerçekten değiştiğinde gönderilir.
Bağlantı 3 sn, toplam 5 sn. Uzun işleri kuyruğa alıp hemen 200 dönün.
Teslim zamanı
Olaylar kuyruğa alınır ve genellikle birkaç saniye, en geç yaklaşık 1 dakika içinde gönderilir. Mağaza işlemi sizin yanıtınızı beklemez.
Yeniden deneme
2xx dışı yanıt veya zaman aşımında 1, 5, 30, 120 ve 360 dakika sonra tekrar denenir (toplam 6 deneme). Sonra teslimat başarısız sayılır.
Tekrar ayıklama
Aynı teslimatın tekrar denemeleri aynı X-Webhook-Delivery / id değerini taşır. İşlediğiniz id'leri saklayıp tekrarları atlayın. Sıra garanti değildir.
Otomatik duraklatma
Art arda 10 teslimat tüm denemelerde başarısız olursa webhook duraklatılır. Panelden yeniden aktifleştirince sayaç sıfırlanır.
timestamp
Olayın Unix zamanı (saniye). İmza kapsamındadır; tekrar oynatmaya karşı eski olayları reddetmek için kullanın.
İmza doğrulama
X-Webhook-Signature değeri, ham istek gövdesinin imza anahtarınızla
HMAC-SHA256 özetidir (küçük harf onaltılık, başında sha256=). Gövdeyi çözmeden önce
ham baytlar üzerinden doğrulayın ve sabit zamanlı karşılaştırma kullanın.
Mağaza yönetim panelinde API & Webhook sayfası (/admin/api,
Platinum) üç sekmeden oluşur:
Sekme
İşlemler
Anahtarlar
Anahtar oluşturma (ad, dakikalık limit, son kullanma, kapsamlar, izinli IP'ler); mevcut anahtarın kapsam, limit, bitiş ve IP listesini düzenleme; iptal. Anahtar değeri yalnız oluşturulduğunda bir kez gösterilir.
Webhook'lar
HTTPS adresi ve olaylarla webhook ekleme (olay seçilmezse tüm olaylar), duraklatma/aktifleştirme, silme. Listede durum, art arda hata sayısı ve son teslim zamanı görünür. Test gönder düğmesi adresinize hemen bir webhook.test olayı yollar ve dönen HTTP kodunu gösterir. Son Teslimatlar tablosu son 30 teslimatın olayını, durumunu, HTTP kodunu ve deneme sayısını listeler. Adres veya olayları değiştirmek için webhook'u silip yeniden ekleyin.
Aktivite
Toplam, son 24 saat ve hatalı istek sayıları; son 50 yazma işleminin denetim izi (eski → yeni değer, anahtar, IP); son 50 isteğin kaydı (yöntem, yol, durum kodu, süre).
Sınırlar ve öneriler
Sunucudan çağırın. CORS desteği yoktur; anahtarı tarayıcıya, mobil uygulamaya veya herkese açık depoya koymayın.
Her entegrasyona ayrı anahtar. ERP, depo, muhasebe gibi her sisteme yalnız gereken kapsamlarla ayrı anahtar açın; biri sızarsa yalnız onu iptal edersiniz.
Sabit IP'niz varsa İzinli IP'ler listesini doldurun.
Kargo gönderisi ücretlidir.POST …/shipment gerçek barkod oluşturur ve mağaza cüzdanından ücret çeker; testleri dikkatle yapın.
Stok mutlak değerdir. Eşzamanlı satışlarda üzerine yazmamak için güncellemeden hemen önce okuyun ya da tek yönlü senkron (ERP → mağaza) kurun.
Webhook'u tek kaynak yapmayın. Tekrar denemeler olsa da adresiniz uzun süre kapalı kalırsa olay kaybolabilir; kritik verileri belirli aralıklarla API ile karşılaştırın.
Hız limiti için toplu senkronlarda per_page=100 kullanın ve X-RateLimit-Remaining başlığını izleyin.
Bu sürümde ürün oluşturma/silme, kategori/marka yazma, müşteri verisi ve sipariş oluşturma uçları yoktur.
Değişiklik günlüğü
14.10.2026
order.created tüm kaynaklardan gönderiliyor; teslim kuyruğu ve 6 tekrar deneme;
X-Webhook-Delivery başlığı; panelde Test gönder.
Bu doküman Ekim 2026 itibarıyla API'nin çalışan davranışını anlatır.
Soru ve talepler için destek kanalımızı kullanın.
Merhabalar, ben SU. Sizlere yardımcı olmak için buradayım — bana her şeyi sorabilirsiniz.
SU ile konuşuyorsunuz
Mesai saatlerinde genelde birkaç dakika içinde yanıtlıyoruz.
Merhaba! Sorunuzu yazın, ekibimiz buradan yanıtlasın.
Çerez tercihiniz
Sitenin çalışması için zorunlu çerezleri kullanıyoruz. Ziyaret istatistikleri
ve pazarlama çerezleri yalnızca siz onay verirseniz devreye girer.
Ayrıntılar için Çerez Politikası ve
Gizlilik Politikası.