İstek nasıl kurulur?
Bu uç JSON gövdesi değil, dosya bekler. multipart/form-data, dosya içeren formlarda kullanılan biçimdir; her değer ayrı bir parça olarak sınırlayıcıyla gönderilir (MDN: POST).
- Form alanının adı: file.
- Dosya adı: örneğin products.json; içerik türü application/json.
- Dosya içeriği: ürün nesnelerinden oluşan bir JSON dizisi.
- Başlıklar: Basic kimlik ve User-Agent her istekte olduğu gibi; içerik türünü form kütüphanesi belirler.
Aynı JSON'u düz gövde olarak POST /product/api/products ucuna göndermek canlıda her seferinde 500 döndürdü. Doğru yöntem, Hepsiburada desteğinin paylaştığı çalışan örnekle doğrulandı.
Dosyadaki bir ürünün alanları
Üst seviyede yalnız iki alan bulunur: categoryId ve merchant. Geri kalan her şey attributes nesnesinin içindedir. Örnek değerler sahtedir.
| Alan | Yeri | Açıklama | Örnek |
|---|---|---|---|
| categoryId | Üst seviye | Yaprak kategori kimliği | KATEGORI_ID |
| merchant | Üst seviye | Merchant ID | SATICI_ID |
| merchantSku | attributes | Satıcı stok kodu | STOK-001 |
| VaryantGroupID | attributes | Varyant grubunun kimliği | STOK-001 |
| UrunAdi | attributes | Ürün adı | Örnek ürün adı |
| UrunAciklamasi | attributes | Ürün açıklaması | Kısa açıklama |
| Barcode | attributes | Barkod (GTIN) | 8690000000000 |
| Marka | attributes | Marka adı | Örnek Marka |
| GarantiSuresi | attributes | Garanti süresi (ay) | 24 |
| tax_vat_rate | attributes | KDV oranı | 20 |
| kg | attributes | Ağırlık ya da desi değeri | 1 |
| Image1, Image2… | attributes | Görsel adresleri | https://ornek.com/1.jpg |
| price | attributes | Fiyat, virgüllü metin | 130,50 |
| stock | attributes | Stok adedi, metin | 5 |
Kategoriye özgü özellikler de aynı attributes nesnesine eklenir. Ayrıntı kategori özellikleri sayfasında.
Biçim kuralları
- Fiyat virgülle yazılır: 130.50 değil 130,50.
- Emoji ve sembol yok: ürün adında, açıklamada ya da markada emoji veya ok gibi semboller varsa katalog servisi düzgün bir doğrulama hatası yerine 500 döndürür.
- Marka birebir yazılır: marka arama için ayrı bir uç bulunmuyor. Markayı Hepsiburada'daki yazımıyla girin; listede olmayan marka onayda reddedilir.
- Görseller erişilebilir olmalı: adresler herkese açık ve doğrudan görsele gitmeli.
- Barkod gerçek olmalı: barkod alanına ürün adı ya da serbest metin yazmayın. Barkod hakkında GS1 Türkiye GTIN'in ürünü dünya genelinde benzersiz tanımladığını belirtir.
Desi değerini hesaplamak için desi hesaplama aracını kullanabilirsiniz.
Yüklemeden sonra ne olur?
Yanıt bir trackingId döndürür. Bu numarayla yükleme sonucu sorgulanır. Sonuç SUCCESS ise dosya kabul edilmiştir ve ürün Hepsiburada'nın incelemesine düşer; panelde "İncelenecek" durumunda görünür. İnceleme genelde dakikalar sürer ama garantisi yoktur. Onaylanan ürün listeleme olarak Listing listesinde ortaya çıkar. Sorgulama adımları ürün durumu sorgulama sayfasında.
Sık hatalar ve çözümleri
| Belirti | Olası neden | Çözüm |
|---|---|---|
| Her istekte 500 | JSON düz gövde olarak gönderilmiş | multipart/form-data ile file alanında dosya gönderin |
| Bazı ürünlerde 500 | Metinde emoji ya da sembol | Ad, açıklama ve markayı temizleyin |
| Fiyat yanlış okunuyor | Ondalık ayırıcı nokta | Virgül kullanın |
| Alanlar yok sayılıyor | Alanlar üst seviyeye yazılmış | Hepsini attributes içine taşıyın |
| Onayda red | Marka listede yok ya da zorunlu özellik eksik | Markayı ve zorunluları kontrol edin |
Sık sorulanlar
Hepsiburada ürün yükleme API ucu nedir?
MPOP servisinde POST /product/api/products/import. JSON, multipart/form-data ile file alanında dosya olarak gönderilir.
Fiyatı hangi biçimde yazmalıyım?
Yükleme dosyasında fiyat virgüllü metin olarak yazılır; örneğin 130,50.
Neden 500 Internal Server Error alıyorum?
En sık iki neden var: JSON'un dosya yerine düz gövde gönderilmesi ve metinde emoji ya da sembol bulunması.
Yükleme başarılı olunca ürün satışa açılır mı?
Hayır. Ürün önce Hepsiburada'nın incelemesine düşer. Onaylandıktan sonra listeleme olarak görünür.
Kaynaklar
İlgili Hepsiburada API konuları
Son güncelleme: 27.10.2026 · Hepsiburada API rehberinin tamamı


