API Referans

ERONTA REST API'si, panel üzerindeki tüm operasyonlara programatik erişim sağlar. Tüm yanıtlar JSON formatındadır.

Temel URL

https://api.eronta.com

İstek Formatı

Tüm isteklerde Content-Type: application/json gereklidir. Kimlik doğrulaması için API anahtarı (X-API-Client + X-API-Key) başlıkları kullanılır.

Kimlik Doğrulama

Eronta API kimlik doğrulama yöntemi:

YöntemHeader(lar)Kullanım Amacı
API Key X-API-Client: <clientId>
X-API-Key: <clientSecret>
Tüm istekler. Paneldeki Özel Uygulamalar sayfasından oluşturulur. Detaylar →
Her istek için X-API-Client ve X-API-Key header'larını gönderin. Kullanıcı adı veya şifre gerekmez.

Hata Kodları

KodAçıklama
400Geçersiz istek (eksik veya hatalı parametre)
401Kimlik doğrulama gerekli veya token geçersiz
403Bu işlem için yetkiniz yok
404Kayıt bulunamadı
429Rate limit aşıldı
500Sunucu hatası

API Key Kimlik Doğrulama

API anahtarı kimlik bilgileri panel → Özel Uygulamalar sayfasından oluşturulur. Kullanıcı adı veya şifre gerekmez.
KEYX-API-Client + X-API-Key Harici uygulama kimlik doğrulaması
HeaderAçıklama
X-API-ClientUygulamanın Client ID değeri (UUID formatı) zorunlu
X-API-KeyUygulamanın Client Secret değeri (64 hex karakter) zorunlu
Örnek istek
GET /api/products?limit=20
X-API-Client: 59cbbab1-867a-4020-be4a-da534a3c4aca
X-API-Key: 6f85f588f9...
curl
curl "https://api.eronta.com/api/products?limit=20" \
  -H "X-API-Client: <clientId>" \
  -H "X-API-Key: <clientSecret>"
Kimlik bilgilerini alma

Panel → Özel UygulamalarYeni Uygulama Ekle ile oluşturulan her uygulama için bir clientId ve clientSecret üretilir. clientSecret yalnızca bir kere gösterilir; kaybedilirse yeniden oluşturulmalıdır.

Yanıt (başarılı)
{
  "ok": true,
  "products": [ ... ],
  "total": 9954
}
Yanıt (hatalı)
{ "ok": false, "error": "Oturum gerekli" }

Ürün Listesi

GET/api/productsSayfalı ürün listesi
ParametreTipAçıklama
pagenumberSayfa no (varsayılan: 1) isteğe bağlı
limitnumberSayfa başına kayıt (maks: 200) isteğe bağlı
qstringAd / barkod araması isteğe bağlı
marketplacestringtrendyol | hepsiburada isteğe bağlı
Yanıt 200 OK
{ "ok": true, "total": 1240, "products": [{ "id": "MP-001", "barcode": "8691234567890", "title": "Ürün Başlığı", "marketplace": "trendyol", "price": 299.90, "stock": 42, "status": "active" }] }

Ürün Detayı

GET/api/products/:productIdTek ürün getir
Yanıt 200 OK
{ "ok": true, "product": { "id": "MP-001", "barcode": "8691234567890", "title": "Ürün Başlığı", "marketplace": "trendyol", "price": 299.90, "listPrice": 349.90, "stock": 42, "brand": "Marka", "status": "active" } }

Ürün Oluştur

POST/api/productsKataloğa yeni ürün ekle
AlanTipAçıklama
titlestringÜrün adı zorunlu
barcodestringBarkod — benzersiz isteğe bağlı
skustringStok kodu / SKU isteğe bağlı
sellPricenumberSatış fiyatı isteğe bağlı
listPricenumberListe fiyatı (KDV dahil) isteğe bağlı
discountPricenumberİndirimli fiyat isteğe bağlı
buyPricenumberAlış fiyatı isteğe bağlı
stockCountnumberStok adedi isteğe bağlı
descriptionstringÜrün açıklaması (HTML destekli) isteğe bağlı
brandstringMarka adı isteğe bağlı
categorystringKategori adı isteğe bağlı
imagesstring[]Görsel URL listesi isteğe bağlı
attributesKVobject[][{"key":"Renk","value":"Siyah"}] isteğe bağlı
sourcestringKaynak platform. Varsayılan: eronta isteğe bağlı
İstek
POST /api/products
Content-Type: application/json

{ "title": "Pamuklu T-Shirt Siyah L", "barcode": "8690000112233", "sku": "TSH-BLK-L", "sellPrice": 249.90, "listPrice": 299.90, "stockCount": 50, "brand": "MyBrand", "category": "Giyim > T-Shirt", "images": ["https://cdn.example.com/tshirt.jpg"], "attributesKV": [{"key":"Renk","value":"Siyah"},{"key":"Beden","value":"L"}] }
Yanıt 201 Created
{ "ok": true, "product": { "id": "f9a3c1d2-...", "source": "eronta", "title": "Pamuklu T-Shirt Siyah L", "barcode": "8690000112233", "sellPrice": 249.90, "stockCount": 50, "createdAt": 1743000000000 } }

409 Conflict — Aynı barkodla ürün zaten varsa: {"ok":false,"error":"Bu barcode ile zaten bir ürün mevcut.","code":"BARCODE_CONFLICT"}

Ürün Güncelle

PUT/api/products/:productIdÜrün bilgilerini güncelle
AlanTipAçıklama
name / titlestringÜrün adı isteğe bağlı
barcodestringYeni barkod isteğe bağlı
skustringSKU / stok kodu isteğe bağlı
sellPricenumberSatış fiyatı isteğe bağlı
discountPricenumberİndirimli fiyat isteğe bağlı
buyPricenumberAlış fiyatı isteğe bağlı
stockCountnumberStok adedi isteğe bağlı
descriptionstringAçıklama isteğe bağlı
brandstringMarka isteğe bağlı
categorystringKategori isteğe bağlı
isActivebooleanAktif / pasif isteğe bağlı
attributesKVobject[]Özellikler [{key,value}] isteğe bağlı
priceListsobject[][{priceListId,salePrice,discountedPrice}] isteğe bağlı

Yalnızca gönderilen alanlar güncellenir. Stok veya fiyat değiştiğinde Trendyol / Hepsiburada'ya otomatik push tetiklenir.

İstek
PUT /api/products/f9a3c1d2-...
Content-Type: application/json

{ "sellPrice": 279.90, "discountPrice": 259.90, "stockCount": 42, "isActive": true }
Yanıt 200 OK
{ "ok": true, "product": { "id": "f9a3c1d2-...", "sellPrice": 279.90, "stockCount": 42 } }

Stok Güncelle

PUT/api/products/:productIdYalnızca stok — pazaryerlerine push tetiklenir

PUT /api/products/:id endpoint'inin stok odaklı kullanımı. Yalnızca stockCount gönderildiğinde pazaryeri stok push'u otomatik tetiklenir.

İstek
PUT /api/products/f9a3c1d2-...
{ "stockCount": 100 }
Yanıt 200 OK
{ "ok": true, "product": { "id": "f9a3c1d2-...", "stockCount": 100, "updatedAt": 1743120000000 } }

Toplu stok için: POST /api/products/import veya fiyat listeleri üzerinden toplu güncelleme yapabilirsiniz.

Fiyat Güncelle

PUT/api/products/:productIdYalnızca fiyat güncelle
İstek
PUT /api/products/f9a3c1d2-...
{ "sellPrice": 349.90, "discountPrice": 299.90 }
Fiyat listesiyle birlikte güncelleme
PUT /api/products/f9a3c1d2-...
{ "sellPrice": 349.90, "priceLists": [{ "priceListId": "pl-001", "salePrice": 349.90, "discountedPrice": 299.90 }] }
Yanıt 200 OK
{ "ok": true, "product": { "id": "f9a3c1d2-...", "sellPrice": 349.90 } }

Görsel Yükle

POST/api/products/:productId/imagesÜrüne görsel ekle (multipart/form-data)

En fazla 20 görsel, toplam 20 MB. Formatlar: jpg, png, webp.

curl
curl -X POST https://api.eronta.com/api/products/f9a3c1d2-.../images \
  -H "X-API-Client: <clientId>" -H "X-API-Key: <secret>" \
  -F "images=@/path/to/photo1.jpg" -F "images=@/path/to/photo2.jpg"
Yanıt 200 OK
{ "ok": true, "added": 2, "images": ["https://api.eronta.com/api/uploads/abc123.jpg","https://api.eronta.com/api/uploads/def456.jpg"] }

Ürün Sil

DELETE/api/products/:productIdÜrünü katalogdan kaldır
Yanıt 200 OK
{ "ok": true, "deleted": "f9a3c1d2-..." }

Toplu İçe Aktar

POST/api/products/importExcel / CSV ile toplu ürün güncelleme

multipart/form-data ile .xlsx / .csv dosyası gönderin.

AlanTipAçıklama
filefilexlsx veya csv dosyası zorunlu
modestringupsert | stock_only | price_only isteğe bağlı
Yanıt 200 OK
{ "ok": true, "imported": 145, "updated": 32, "skipped": 3, "errors": [] }

Sipariş Listesi

POST/api/orders/listFiltreli sipariş listesi
AlanTipAçıklama
sourcestringtrendyol | hepsiburada | all isteğe bağlı
statusstringSipariş durumu isteğe bağlı
startDatestringISO 8601 tarih isteğe bağlı
endDatestringISO 8601 tarih isteğe bağlı
qstringSipariş no / müşteri adı isteğe bağlı
pagenumberSayfa no isteğe bağlı
limitnumberSayfa başına kayıt isteğe bağlı
İstek
{ "source": "trendyol", "startDate": "2026-03-01T00:00:00Z", "endDate": "2026-03-28T23:59:59Z", "page": 1, "limit": 25 }
Yanıt 200 OK
{ "ok": true, "total": 318, "orders": [{ "id": "12345678", "source": "trendyol", "status": "Delivered", "customerName": "Ahmet Y.", "totalPrice": 459.90, "currency": "TRY", "createdAt": "2026-03-20T14:32:00Z" }] }

Sipariş Detayı

GET/api/orders/:source/:idSipariş detayları, kargo, adres

source: trendyol | hepsiburada | ikas

Yanıt 200 OK
{
  "ok": true,
  "order": {
    "id": "12345678", "source": "trendyol", "status": "Delivered",
    "customerName": "Ahmet Yılmaz",
    "shippingAddress": { "fullName": "Ahmet Yılmaz", "address": "Atatürk Cad. No:5", "city": "İstanbul", "district": "Kadıköy" },
    "lines": [{ "barcode": "8690000112233", "productName": "Pamuklu T-Shirt", "quantity": 2, "amount": 249.90 }],
    "totalPrice": 499.80, "cargoTrackingNumber": "TR123456789", "cargoCompany": "Yurtiçi Kargo"
  }
}

Sipariş İstatistikleri

GET/api/orders/dashboard-statsDashboard istatistikleri
Yanıt 200 OK
{ "ok": true, "today": { "orderCount": 24, "revenue": 8740.50 }, "last7days": { "orderCount": 187, "revenue": 68450.75 }, "last30days": { "orderCount": 823, "revenue": 298120.40 }, "bySource": { "trendyol": { "count": 512, "revenue": 183000 }, "hepsiburada": { "count": 311, "revenue": 115120 } } }

Fatura Kes

POST/api/orders/:source/:id/invoiceSipariş için fatura kes
Yanıt 200 OK
{ "ok": true, "invoiceNo": "EAR-2026-00124", "invoiceUrl": "https://..." }

Siparişleri Dışa Aktar

POST/api/orders/exportCSV / Excel olarak dışa aktar
AlanTipAçıklama
formatstringcsv | xlsx zorunlu
startDatestringBaşlangıç tarihi isteğe bağlı
endDatestringBitiş tarihi isteğe bağlı

Yanıt olarak dosya stream döner (application/octet-stream).

Müşteri Sorularını Listele

GET/api/questions/listTrendyol müşteri soruları
AlanTipAçıklama
statusstringWAITING_FOR_ANSWER | ANSWERED isteğe bağlı
pagenumberSayfa (0'dan başlar) isteğe bağlı
sizenumberSayfa başına kayıt, maks 200 isteğe bağlı
Yanıt 200 OK
{ "ok": true, "totalElements": 14, "questions": [{ "id": "q-98765", "text": "Bu ürün L beden büyük mü kesiliyor?", "status": "WAITING_FOR_ANSWER", "barcode": "8690000112233", "productName": "Pamuklu T-Shirt Siyah L", "platform": "trendyol" }] }

AI Cevap Üret

POST/api/questions/generateAI cevap taslağı oluştur

Eronta AI, ürün açıklaması ve özellikleri göz önünde bulundurarak doğal dilde cevap taslağı üretir.

AlanTipAçıklama
questionstringMüşteri soru metni zorunlu
barcodestringÜrün barkodu isteğe bağlı
productDataobjectManuel ürün bağlamı isteğe bağlı
İstek
POST /api/questions/generate
{ "question": "Bu ürün L beden büyük mü kesiliyor?", "barcode": "8690000112233" }
Yanıt 200 OK
{ "ok": true, "answer": "Merhaba! Ürünümüz standart kesimde olmakla birlikte rahat bir kullanım için bir beden büyük almanızı öneririz." }

Not: AI paketi gerektiren bir özelliktir. Paketsiz hesaplarda 403 FEATURE_DISABLED döner.

Cevap Gönder

POST/api/questions/:id/answerSoruyu Trendyol'da yanıtla
AlanTipAçıklama
textstringCevap metni (10–2000 karakter) zorunlu
Yanıt 200 OK
{ "ok": true, "message": "Cevap gönderildi." }

Oto-Cevap Ayarları

GET/api/questions/settingsOtomatik cevaplama ayarları
GET yanıtı
{ "ok": true, "storePrompt": "Mağazamız hafta içi 09:00-18:00 açıktır. Kargo 1-3 iş günü.", "autoMode": "generate", "lastAutoRunAt": 1743100000000 }

autoMode: off — devre dışı | generate — AI taslak, onay bekler | auto — otomatik yanıtla

POST ile güncelleme
POST /api/questions/settings
{ "storePrompt": "Kargo 1-3 iş günü. İadeler 14 gün içinde.", "autoMode": "generate" }

Fiyat Listeleri — Listele

GET/api/price-listsTüm fiyat listeleri
Yanıt 200 OK
{ "ok": true, "priceLists": [{ "id": 3, "name": "Trendyol Yazlık", "currency": "TRY", "itemCount": 248, "createdAt": "2026-01-15T08:00:00Z" }] }

Fiyat Listesi — Oluştur

POST/api/price-listsYeni liste oluştur
AlanTipAçıklama
namestringListe adı zorunlu
descriptionstringAçıklama isteğe bağlı
currencystringPara birimi (varsayılan: TRY) isteğe bağlı
Yanıt 201 Created
{ "ok": true, "id": 5, "name": "Yaz Kampanyası" }

Fiyat Listesi — Ürün Ekle

POST/api/price-lists/:id/itemsListeye ürün ekle / güncelle
AlanTipAçıklama
barcodestringÜrün barkodu zorunlu
pricenumberSatış fiyatı zorunlu
salePricenumberİndirimli fiyat isteğe bağlı
Yanıt 200 OK
{ "ok": true }

Fiyat Listesi — İçe / Dışa Aktar

POST/api/price-lists/:id/exportXLS olarak dışa aktar

Excel dosyası (application/octet-stream) döner.

POST/api/price-lists/:id/importXLS'den toplu içe aktar

multipart/form-data ile file alanında XLS gönderilir.

Yanıt 200 OK
{ "ok": true, "imported": 248, "skipped": 2 }

Buybox Ürünleri

GET/api/buybox/productsBuybox durum listesi
Yanıt 200 OK
{ "ok": true, "products": [{ "barcode": "8691234567890", "title": "Ürün Başlığı", "marketplace": "trendyol", "myPrice": 299.90, "buyboxPrice": 279.90, "hasBuybox": false }] }

Fiyat Öner (Reprice)

POST/api/buybox/reprice/suggestRekabetçi fiyat önerisi
AlanTipAçıklama
barcodestringÜrün barkodu zorunlu
marketplacestringtrendyol | hepsiburada zorunlu
Yanıt 200 OK
{ "ok": true, "suggestedPrice": 274.90, "minAllowedPrice": 267.50, "profitMargin": 0.14 }

Buybox Ayarları

GET/api/buybox/settingsBuybox ayarlarını getir
Yanıt 200 OK
{ "ok": true, "settings": { "autoSync": true, "autoSyncInterval": 30, "minMarginPercent": 10 } }

AI Sohbet

POST/api/ai/chatAI asistana mesaj gönder
AlanTipAçıklama
messagestringKullanıcı sorusu zorunlu
conversationIdstringDevam eden sohbet ID'si isteğe bağlı
Yanıt 200 OK
{ "ok": true, "conversationId": "conv_xkq82", "reply": "Bu hafta en çok satan 5 ürününüz..." }

AI İçgörüler

GET/api/ai/insightsAktif içgörüler
Yanıt 200 OK
{ "ok": true, "insights": [{ "id": "ins_m9k3", "type": "low_stock", "severity": "warning", "title": "8 ürününüzde stok kritik", "isRead": false }] }

AI Öneriler

GET/api/ai/recommendations/listÖneri listesi
Yanıt 200 OK
{ "ok": true, "recommendations": [{ "id": "rec_p2a1", "type": "price_adjustment", "title": "Buybox kazanmak için fiyat düşürün", "impact": "high" }] }

Ayarları Getir

GET/api/settingsTüm mağaza ayarları
Yanıt 200 OK
{ "ok": true, "settings": { "stockBuffer": 2, "currency": "TRY", "timezone": "Europe/Istanbul" } }

Kullanıcılar

GET/api/settings/usersMağaza kullanıcıları
Yanıt 200 OK
{ "ok": true, "users": [{ "id": 42, "email": "kullanici@firma.com", "fullName": "Ad Soyad", "role": "admin", "isActive": true }] }