Ürün, Stok ve Satış Verilerinizi Dış Panellere Bağlayın
Rafta REST API ile deponuzdaki güncel stok adetlerini, barkod ve fiyat listesini, stok giriş-çıkış hareketlerini ve satış verilerinizi kendi e-ticaret sitenize, ERP yazılımınıza, Excel/PowerBI tablolarınıza veya özel yönetim panelinize canlı olarak çekin.
3 Adımda Hızlı Kurulum
Veri Yönetimi Sekmesini Açın
panel.rafta.app üzerinden hesabınıza giriş yapın ve Ayarlar → Veri Yönetimi sekmesine gidin.
API Anahtarınızı Üretin
REST API & Dış Panel Entegrasyonu kartındaki “🔑 API Anahtarı Oluştur” butonuna tıklayın ve rft_live_... anahtarınızı kopyalayın.
HTTP Başlığı ile Sorgulayın
İsteklerinizde Authorization: Bearer rft_live_... veya X-API-Key başlığını göndererek JSON verilerinizi çekin.
https://panel.rafta.app/api/v1Tüm uç noktalar HTTPS üzerinden UTF-8 JSON yanıtı döndürür. CORS tüm dış panellere açıktır.
Anahtarınızı 3 farklı yöntemden dilediğiniz biriyle gönderebilirsiniz:
- 1. Authorization: Bearer rft_live_...
- 2. X-API-Key: rft_live_...
- 3. ?apiKey=rft_live_... (Query Param)
İşletme başına dakikada 30 istek (Rate Limit) hakkı tanımlıdır. Yanıtlar yüksek hız için 60 saniye önbelleklenir (X-RateLimit-Remaining başlığı ile takip edilebilir).
Dil ve Platformlara Göre Entegrasyon Örnekleri
Aşağıdaki örnek kodlardaki rft_live_BURAYA_ANAHTARINIZI_YAZIN kısmına kendi API anahtarınızı yazarak hemen çalıştırabilirsiniz.
curl -X GET "https://panel.rafta.app/api/v1/products?limit=200" \ -H "Authorization: Bearer rft_live_BURAYA_ANAHTARINIZI_YAZIN" \ -H "Accept: application/json"
const API_KEY = "rft_live_BURAYA_ANAHTARINIZI_YAZIN";
const res = await fetch("https://panel.rafta.app/api/v1/products", {
headers: {
"Authorization": `Bearer ${API_KEY}`,
},
});
const data = await res.json();
console.log("Toplam Ürün:", data.summary.count);
console.log("Ürün Listesi:", data.products);<?php
$apiKey = "rft_live_BURAYA_ANAHTARINIZI_YAZIN";
$ch = curl_init("https://panel.rafta.app/api/v1/sales?limit=100");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-API-Key: " . $apiKey,
"Accept: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data["summary"]);
print_r($data["sales"]);import requests
API_KEY = "rft_live_BURAYA_ANAHTARINIZI_YAZIN"
headers = {"Authorization": f"Bearer {API_KEY}"}
resp = requests.get(
"https://panel.rafta.app/api/v1/transactions",
params={"limit": 100},
headers=headers,
timeout=15,
)
payload = resp.json()
print("Stok Hareketleri:", len(payload.get("transactions", [])))REST API v1 Uç Noktaları (Endpoints)
1. Bağlantı Testi ve İşletme Durumu
API anahtarınızın doğruluğunu, bağlı işletme bilgilerini, aktif paket durumunu ve kalan dakikalık istek kotanızı döndürür.
Sorgu Parametreleri (Query Params)
Bu uç nokta ek sorgu parametresi gerektirmez. Yalnızca API anahtarınızı göndermeniz yeterlidir.
Örnek JSON Yanıtı (200 OK)
{
"success": true,
"apiVersion": "v1",
"status": "connected",
"business": {
"id": "7yIBr4xy2Bw2dnAF7Cpl",
"name": "Örnek Depo & Lojistik",
"sector": "Depo / Lojistik",
"currency": "TRY",
"plan": "business",
"apiAccessMode": "business_plan"
},
"endpoints": {
"status": "https://panel.rafta.app/api/v1/status",
"products": "https://panel.rafta.app/api/v1/products",
"transactions": "https://panel.rafta.app/api/v1/transactions",
"sales": "https://panel.rafta.app/api/v1/sales"
},
"rateLimit": {
"limitPerMinute": 30,
"remaining": 29,
"resetInSeconds": 60
},
"timestamp": "2026-10-18T12:30:00.000Z"
}2. Ürünler, Barkodlar ve Güncel Stok Miktarları
İşletmenizdeki aktif tüm ürünleri, barkod numaralarını, güncel stok adetlerini, alış/satış fiyatlarını, varyantları ve toplam stok değer özetini döndürür.
Sorgu Parametreleri (Query Params)
limitnumberOpsiyonelDöndürülecek maksimum ürün sayısı (Varsayılan: 200, Maks: 500)
barcodestringOpsiyonelBelirli bir barkoda (veya varyant barkoduna) sahip ürünü filtreler
searchstringOpsiyonelÜrün adı, barkod, SKU veya stok koduna göre metin araması yapar
categoryIdstringOpsiyonelBelirli bir kategori ID'sine ait ürünleri filtreler
locationIdstringOpsiyonelBelirli bir depo/şube ID'sine ait ürünleri filtreler
lowStockOnlybooleanOpsiyonel'true' gönderilirse yalnızca kritik stok sınırındaki ürünleri döndürür
Örnek JSON Yanıtı (200 OK)
{
"success": true,
"businessId": "7yIBr4xy2Bw2dnAF7Cpl",
"currency": "TRY",
"summary": {
"count": 142,
"totalStockQuantity": 3480,
"totalStockCostValue": 412500.00,
"totalStockSaleValue": 589200.00,
"lowStockCount": 6
},
"products": [
{
"id": "prd_98a7bc65",
"name": "Endüstriyel Streç Film 17 Mikron",
"barcode": "8690000123456",
"sku": "STR-17M",
"stockCode": "DP-A12",
"quantity": 120,
"minQuantity": 20,
"unit": "Adet",
"costPrice": 185.00,
"salePrice": 260.00,
"vatRate": 20,
"isLowStock": false,
"shelf": "Raf A-3",
"variants": [],
"updatedAt": "2026-10-18T11:45:10.000Z"
}
],
"timestamp": "2026-10-18T12:30:00.000Z"
}3. Stok Giriş / Çıkış Hareketleri
Depo ve mağazanızda gerçekleşen son stok hareketlerini (stok giriş, stok çıkış, satış, iade, fire/zayi, transfer) kronolojik olarak döndürür.
Sorgu Parametreleri (Query Params)
limitnumberOpsiyonelDöndürülecek kayıt sayısı (Varsayılan: 100, Maks: 200)
typestringOpsiyonelİşlem tipi filtresi: stock_in | stock_out | sale | return | waste | transfer
productIdstringOpsiyonelSadece belirli bir ürüne ait stok hareketlerini filtreler
sinceISO DateOpsiyonelBelirtilen tarihten sonraki hareketleri getirir (Örn: 2026-10-01)
Örnek JSON Yanıtı (200 OK)
{
"success": true,
"businessId": "7yIBr4xy2Bw2dnAF7Cpl",
"currency": "TRY",
"summary": {
"count": 2
},
"transactions": [
{
"id": "tx_4412ab",
"productId": "prd_98a7bc65",
"productName": "Endüstriyel Streç Film 17 Mikron",
"type": "stock_in",
"quantity": 50,
"previousQuantity": 70,
"newQuantity": 120,
"salePrice": 260.00,
"costPrice": 185.00,
"note": "Merkez depo sevkiyat girişi",
"userName": "Emre Ateş",
"createdAt": "2026-10-18T10:15:00.000Z"
}
],
"timestamp": "2026-10-18T12:30:00.000Z"
}4. Satış Kalemleri, Kasa Tahsilatları ve Ciro Özeti
Gerçekleşen ürün bazlı satış kalemlerini (sales), kasa/POS gelir kayıtlarını (cashEntries) ve toplam ciro/maliyet/brüt kâr özetini döndürür.
Sorgu Parametreleri (Query Params)
limitnumberOpsiyonelDöndürülecek maksimum satış kaydı sayısı (Varsayılan: 100, Maks: 200)
productIdstringOpsiyonelBelirli bir ürüne ait satış kalemlerini filtreler
sinceISO DateOpsiyonelBelirtilen tarihten sonraki satışları getirir (Örn: 2026-10-01T00:00:00Z)
Örnek JSON Yanıtı (200 OK)
{
"success": true,
"businessId": "7yIBr4xy2Bw2dnAF7Cpl",
"currency": "TRY",
"summary": {
"saleItemCount": 18,
"totalQuantitySold": 45,
"totalSaleRevenue": 11700.00,
"totalSaleCost": 8325.00,
"estimatedGrossProfit": 3375.00,
"cashIncomeCount": 12,
"totalCashIncome": 11700.00
},
"sales": [
{
"id": "tx_9910fa",
"productId": "prd_98a7bc65",
"productName": "Endüstriyel Streç Film 17 Mikron",
"quantity": 10,
"salePrice": 260.00,
"costPrice": 185.00,
"lineTotal": 2600.00,
"previousQuantity": 130,
"newQuantity": 120,
"note": "POS Satış — Nakit",
"userName": "Emre Ateş",
"createdAt": "2026-10-18T11:20:00.000Z"
}
],
"cashEntries": [
{
"id": "csh_1102bc",
"amount": 2600.00,
"category": "Satış",
"paymentMethod": "cash",
"source": "pos",
"note": "POS — 10 ürün",
"userName": "Emre Ateş",
"createdAt": "2026-10-18T11:20:00.000Z"
}
],
"timestamp": "2026-10-18T12:30:00.000Z"
}HTTP Durum ve Hata Kodları
| HTTP Kodu | Hata Kodu | Açıklama & Çözüm |
|---|---|---|
| 200 OK | — | İstek başarılı. Veriler JSON gövdesinde döndürüldü. |
| 401 Unauthorized | MISSING_API_KEY / INVALID_API_KEY | API anahtarı gönderilmedi, hatalı veya iptal edilmiş. Panel → Ayarlar → Veri Yönetimi ekranından aktif anahtarınızı kontrol edin. |
| 403 Forbidden | PLAN_UPGRADE_REQUIRED | REST API erişimi Rafta Kasa & POS (Business) paketinde aktiftir. |
| 429 Too Many Requests | RATE_LIMIT_EXCEEDED | Dakikalık 30 istek sınırı aşıldı. Retry-After saniyesi kadar bekleyip tekrar deneyin. |
Özel panelinize bağlarken yardıma mı ihtiyacınız var?
API anahtarınızı hemen oluşturabilir veya entegrasyon sorularınız için destek@rafta.app adresinden ekibimize ulaşabilirsiniz.