14 gün ücretsiz deneyin, kredi kartı gerekmez.
Geliştiriciler

API ve Yapay Zeka Bağlantısı Belgeleri

Mağazanızın ürün, sipariş ve müşteri verisine kendi yazılımınızdan ya da yapay zeka asistanınızdan erişin.

Kimlik Doğrulama

Anahtar panelde Ayarlar › API bölümünden oluşturulur; ad ve yetkiler seçilir, anahtar (tici_ ile başlar) yalnız oluşturulduğu anda bir kez gösterilir. Her istekte 'Authorization: Bearer tici_…' başlığıyla gönderilir. Yetkiler: products:read, products:write, orders:read, orders:write, customers:read. API ve MCP erişimi Pro Plus paketinde açıktır; diğer paketlerde istek 403 döner. Anahtarı oluşturan yönetici kaldırılırsa ya da tam yetkisi alınırsa anahtar çalışmaz (401). Anahtar geçersizse 401, anahtarda rotanın yetkisi yoksa 403, doğrulama hatasında 422 döner; hata gövdesi {"message": "…"}.

İstek Sınırı

Uç başına dakikada 120 istek (REST v1 ve /mcp). Sayaç istemcinin IP adresine göre ve her uç için ayrı tutulur. Aşılırsa 429 döner; X-RateLimit-Limit, X-RateLimit-Remaining ve Retry-After başlıkları gelir.

REST API

GET/api/v1/openapi.json

OpenAPI belgesi

REST API'nin OpenAPI şeması. Anahtar gerektirmez.

Örnek yanıt
{
  "openapi": "3.1.0",
  "info": {
    "title": "…"
  },
  "paths": {
    "/products": {}
  }
}

GET/api/v1/products

Ürünleri listele

Listelenen ürünler; varyant, görsel, marka ve kategorileriyle.

Yetki: products:read

ParametreTürAçıklama
updated_sincetarih (ISO 8601)Yalnız bu andan sonra güncellenen kayıtlar; artımlı çekim için.
per_pagetam sayı (1-200)Sayfa başına kayıt; varsayılan 50.
pagetam sayıSayfa numarası; yanıttaki links.next ile ilerlenir.
Örnek yanıt
{
  "data": [
    {
      "id": 42,
      "title": "Seramik Kupa",
      "slug": "seramik-kupa",
      "url": "https://magaza.com/urun/seramik-kupa",
      "status": "active",
      "brand": "Atölye",
      "categories": [
        "Mutfak"
      ],
      "description": "<p>El yapımı seramik kupa.</p>",
      "option_names": [
        "Renk"
      ],
      "images": [
        "https://magaza.com/storage/media/kupa-1600.webp"
      ],
      "variants": [
        {
          "id": 77,
          "sku": "KUPA-MAVI",
          "barcode": "8690000000017",
          "title": "Mavi",
          "options": [
            "Mavi"
          ],
          "price_minor": 19990,
          "compare_at_minor": 24990,
          "stock": 12
        }
      ],
      "updated_at": "2026-11-12T14:05:00+03:00"
    }
  ],
  "links": {
    "first": "…?page=1",
    "last": "…?page=3",
    "prev": null,
    "next": "…?page=2"
  },
  "meta": {
    "current_page": 1,
    "per_page": 50,
    "total": 128,
    "last_page": 3
  }
}

GET/api/v1/products/{product}

Ürün getir

Kimliğiyle tek ürün. Yoksa 404.

Yetki: products:read

ParametreTürAçıklama
product *tam sayı (yol)Ürün kimliği (id).
Örnek yanıt
{
  "data": {
    "id": 42,
    "title": "Seramik Kupa",
    "slug": "seramik-kupa",
    "url": "https://magaza.com/urun/seramik-kupa",
    "status": "active",
    "brand": "Atölye",
    "categories": [
      "Mutfak"
    ],
    "description": "<p>El yapımı seramik kupa.</p>",
    "option_names": [
      "Renk"
    ],
    "images": [
      "https://magaza.com/storage/media/kupa-1600.webp"
    ],
    "variants": [
      {
        "id": 77,
        "sku": "KUPA-MAVI",
        "barcode": "8690000000017",
        "title": "Mavi",
        "options": [
          "Mavi"
        ],
        "price_minor": 19990,
        "compare_at_minor": 24990,
        "stock": 12
      }
    ],
    "updated_at": "2026-11-12T14:05:00+03:00"
  }
}

PATCH/api/v1/variants/{sku}

Fiyat ve stok güncelle

SKU'su verilen varyantın fiyatını, indirimden önceki fiyatını ve stoğunu günceller; gönderilmeyen alan değişmez. Stok değişimi stok hareketlerine 'API · <anahtar adı>' notuyla yazılır ve satış kanallarına yansır. Yanıt ürünün güncel halidir.

Yetki: products:write

ParametreTürAçıklama
sku *metin (yol)Varyant SKU'su.
pricemetin ya da sayıSatış fiyatı, TL: "199,90" ya da 199.9. Sıfırdan büyük olmalı.
compare_atmetin ya da sayıİndirimden önceki fiyat, TL. Satış fiyatından büyük değilse boşaltılır.
stocktam sayı (0-1000000)Yeni stok adedi.
warehouse_idtam sayıStoğun yazılacağı depo kimliği; verilmezse varsayılan depo.
Örnek yanıt
{
  "data": {
    "id": 42,
    "title": "Seramik Kupa",
    "slug": "seramik-kupa",
    "url": "https://magaza.com/urun/seramik-kupa",
    "status": "active",
    "brand": "Atölye",
    "categories": [
      "Mutfak"
    ],
    "description": "<p>El yapımı seramik kupa.</p>",
    "option_names": [
      "Renk"
    ],
    "images": [
      "https://magaza.com/storage/media/kupa-1600.webp"
    ],
    "variants": [
      {
        "id": 77,
        "sku": "KUPA-MAVI",
        "barcode": "8690000000017",
        "title": "Mavi",
        "options": [
          "Mavi"
        ],
        "price_minor": 19990,
        "compare_at_minor": 24990,
        "stock": 12
      }
    ],
    "updated_at": "2026-11-12T14:05:00+03:00"
  }
}

GET/api/v1/orders

Siparişleri listele

Siparişler kalemleri, tutarları, adresleri ve kargo bilgisiyle.

Yetki: orders:read

ParametreTürAçıklama
statusmetinSipariş durumu: awaiting_payment, payment_review, to_ship, shipped, delivered, refunded, payment_failed, cancelled.
updated_sincetarih (ISO 8601)Yalnız bu andan sonra güncellenen kayıtlar; artımlı çekim için.
per_pagetam sayı (1-200)Sayfa başına kayıt; varsayılan 50.
pagetam sayıSayfa numarası; yanıttaki links.next ile ilerlenir.
Örnek yanıt
{
  "data": [
    {
      "number": 1042,
      "status": "to_ship",
      "status_label": "Kargoya verilecek",
      "payment_method": "card",
      "source": "storefront",
      "channel": null,
      "external_id": null,
      "customer": {
        "name": "Ayşe Yılmaz",
        "email": "ayse@ornek.com",
        "phone": "+905321112233"
      },
      "shipping_address": {
        "name": "Ayşe Yılmaz",
        "phone": "+905321112233",
        "line1": "Bağdat Cad. 12/3",
        "district": "Kadıköy",
        "city": "İstanbul",
        "zip": "34710",
        "country": "TR"
      },
      "billing_address": null,
      "currency": "TRY",
      "subtotal_minor": 19990,
      "discount_minor": 0,
      "shipping_minor": 4990,
      "cod_fee_minor": 0,
      "tax_minor": 3332,
      "total_minor": 24980,
      "commission_minor": 0,
      "coupon_code": null,
      "items": [
        {
          "sku": "KUPA-MAVI",
          "title": "Seramik Kupa",
          "variant": "Mavi",
          "quantity": 1,
          "unit_price_minor": 19990,
          "total_minor": 19990,
          "tax_rate_bp": 2000
        }
      ],
      "delivery_method": "cargo",
      "delivery_date": null,
      "carrier": null,
      "tracking_number": null,
      "note": null,
      "created_at": "2026-11-12T13:40:00+03:00",
      "paid_at": "2026-11-12T13:41:00+03:00",
      "shipped_at": null,
      "delivered_at": null,
      "cancelled_at": null,
      "updated_at": "2026-11-12T13:41:00+03:00"
    }
  ],
  "links": {
    "first": "…?page=1",
    "last": "…?page=3",
    "prev": null,
    "next": "…?page=2"
  },
  "meta": {
    "current_page": 1,
    "per_page": 50,
    "total": 128,
    "last_page": 3
  }
}

GET/api/v1/orders/{number}

Sipariş getir

Sipariş numarasıyla tek sipariş. Yoksa 404.

Yetki: orders:read

ParametreTürAçıklama
number *tam sayı (yol)Sipariş numarası (ör. 1042).
Örnek yanıt
{
  "data": {
    "number": 1042,
    "status": "to_ship",
    "status_label": "Kargoya verilecek",
    "payment_method": "card",
    "source": "storefront",
    "channel": null,
    "external_id": null,
    "customer": {
      "name": "Ayşe Yılmaz",
      "email": "ayse@ornek.com",
      "phone": "+905321112233"
    },
    "shipping_address": {
      "name": "Ayşe Yılmaz",
      "phone": "+905321112233",
      "line1": "Bağdat Cad. 12/3",
      "district": "Kadıköy",
      "city": "İstanbul",
      "zip": "34710",
      "country": "TR"
    },
    "billing_address": null,
    "currency": "TRY",
    "subtotal_minor": 19990,
    "discount_minor": 0,
    "shipping_minor": 4990,
    "cod_fee_minor": 0,
    "tax_minor": 3332,
    "total_minor": 24980,
    "commission_minor": 0,
    "coupon_code": null,
    "items": [
      {
        "sku": "KUPA-MAVI",
        "title": "Seramik Kupa",
        "variant": "Mavi",
        "quantity": 1,
        "unit_price_minor": 19990,
        "total_minor": 19990,
        "tax_rate_bp": 2000
      }
    ],
    "delivery_method": "cargo",
    "delivery_date": null,
    "carrier": null,
    "tracking_number": null,
    "note": null,
    "created_at": "2026-11-12T13:40:00+03:00",
    "paid_at": "2026-11-12T13:41:00+03:00",
    "shipped_at": null,
    "delivered_at": null,
    "cancelled_at": null,
    "updated_at": "2026-11-12T13:41:00+03:00"
  }
}

POST/api/v1/orders/{number}/ship

Siparişi kargoya ver

Kargolanacak (to_ship) durumundaki siparişi kargoya verildi yapar, müşteriye kargo e-postası gider ve order.shipped webhook'u tetiklenir. Sipariş başka durumdaysa 422.

Yetki: orders:write

ParametreTürAçıklama
number *tam sayı (yol)Sipariş numarası.
carriermetin (en çok 64)Kargo firması adı.
tracking_numbermetin (en çok 64)Takip numarası.
Örnek yanıt
{
  "data": {
    "number": 1042,
    "status": "shipped",
    "status_label": "Kargoda",
    "payment_method": "card",
    "source": "storefront",
    "channel": null,
    "external_id": null,
    "customer": {
      "name": "Ayşe Yılmaz",
      "email": "ayse@ornek.com",
      "phone": "+905321112233"
    },
    "shipping_address": {
      "name": "Ayşe Yılmaz",
      "phone": "+905321112233",
      "line1": "Bağdat Cad. 12/3",
      "district": "Kadıköy",
      "city": "İstanbul",
      "zip": "34710",
      "country": "TR"
    },
    "billing_address": null,
    "currency": "TRY",
    "subtotal_minor": 19990,
    "discount_minor": 0,
    "shipping_minor": 4990,
    "cod_fee_minor": 0,
    "tax_minor": 3332,
    "total_minor": 24980,
    "commission_minor": 0,
    "coupon_code": null,
    "items": [
      {
        "sku": "KUPA-MAVI",
        "title": "Seramik Kupa",
        "variant": "Mavi",
        "quantity": 1,
        "unit_price_minor": 19990,
        "total_minor": 19990,
        "tax_rate_bp": 2000
      }
    ],
    "delivery_method": "cargo",
    "delivery_date": null,
    "carrier": "Yurtiçi Kargo",
    "tracking_number": "123456789012",
    "note": null,
    "created_at": "2026-11-12T13:40:00+03:00",
    "paid_at": "2026-11-12T13:41:00+03:00",
    "shipped_at": "2026-11-13T10:15:00+03:00",
    "delivered_at": null,
    "cancelled_at": null,
    "updated_at": "2026-11-13T10:15:00+03:00"
  }
}

GET/api/v1/customers

Müşterileri listele

Müşteriler; verisi silinmiş (anonimleştirilmiş) kayıtlar gelmez.

Yetki: customers:read

ParametreTürAçıklama
updated_sincetarih (ISO 8601)Yalnız bu andan sonra güncellenen kayıtlar; artımlı çekim için.
per_pagetam sayı (1-200)Sayfa başına kayıt; varsayılan 50.
pagetam sayıSayfa numarası; yanıttaki links.next ile ilerlenir.
Örnek yanıt
{
  "data": [
    {
      "id": 7,
      "name": "Ayşe Yılmaz",
      "email": "ayse@ornek.com",
      "phone": "+905321112233",
      "marketing_consent": true,
      "created_at": "2026-10-01T09:12:00+03:00"
    }
  ],
  "links": {
    "first": "…?page=1",
    "last": "…?page=3",
    "prev": null,
    "next": "…?page=2"
  },
  "meta": {
    "current_page": 1,
    "per_page": 50,
    "total": 128,
    "last_page": 3
  }
}

Yapay Zeka Bağlantısı (MCP)

Adres: POST https://<mağaza alan adı>/mcp (HTTP üzerinden MCP; sunucu adı 'tici', sürüm 1.0.0). REST API anahtarıyla aynı 'Authorization: Bearer tici_…' başlığı kullanılır. Araçlar anahtarın yetkisine göre listelenir; hepsi salt okunurdur.

urun-ara

Ürünleri ada, SKU ya da barkoda göre arar; varyant fiyatı (kuruş) ve stoğuyla döner. Arama boşsa son güncellenenler. Yetki: products:read.

ParametreTürAçıklama
aramametin (en çok 100)Ürün adı, SKU ya da barkod.
stok_azmantıksalYalnız mağazanın düşük stok eşiğindeki ürünler.
adettam sayı (1-50)En çok kaç ürün; varsayılan 20.
siparisler

Siparişleri en yeniden eskiye listeler; duruma, tarihe ve müşteri adı/e-postasına göre süzer. Yetki: orders:read.

ParametreTürAçıklama
durummetinSipariş durumu: awaiting_payment, payment_review, to_ship, shipped, delivered, refunded, payment_failed, cancelled.
baslangictarih (YYYY-AA-GG)Bu tarihten sonra verilenler.
bitistarih (YYYY-AA-GG)Bu tarihe kadar verilenler.
musterimetin (en çok 100)Müşteri adı ya da e-postası.
adettam sayı (1-50)En çok kaç sipariş; varsayılan 20.
siparis

Sipariş numarasıyla tek siparişin tüm ayrıntısı. Yetki: orders:read.

ParametreTürAçıklama
numara *tam sayıSipariş numarası (ör. 1042).
musteri-ara

Müşterileri ada, e-postaya ya da telefona göre arar; sipariş sayısı (orders_count) ve toplam harcamasıyla (spent_minor) döner. Arama boşsa son kayıt olanlar. Yetki: customers:read.

ParametreTürAçıklama
aramametin (en çok 100)Ad, e-posta ya da telefon.
adettam sayı (1-50)En çok kaç müşteri; varsayılan 20.
satis-ozeti

Tarih aralığında ciro, sipariş sayısı, ortalama sepet, ödeme yöntemi ve kanal dağılımı, en çok satan 10 ürün. Ciro ödenmiş ve iptal edilmemiş siparişlerden, ödeme gününe göre hesaplanır. Yetki: orders:read.

ParametreTürAçıklama
baslangictarih (YYYY-AA-GG)Varsayılan 30 gün önce.
bitistarih (YYYY-AA-GG)Varsayılan bugün; başlangıçtan önce olamaz.

Webhook Olayları

Ayarlar › API bölümünden https adresi ve olaylar seçilerek eklenir. Her olayda adrese JSON POST gider. Başlıklar: X-Tici-Event (olay adı), X-Tici-Delivery (teslimat kimliği), X-Tici-Signature: sha256=<gövdenin webhook gizli anahtarıyla HMAC-SHA256'sı>, User-Agent: tici-webhooks/1. 15 saniyede 2xx dönmeyen teslimat 1 dk, 5 dk, 15 dk ve 1 saat sonra yeniden denenir; art arda 20 başarısız teslimatta webhook kapanır. Panelden gönderilen test 'ping' olayıdır.

OlayNe zamanGövde
order.placedSipariş verildiSipariş (GET /orders/{number} ile aynı alanlar)
order.paidÖdeme alındıSipariş
order.shippedKargoya verildiSipariş
order.deliveredTeslim edildiSipariş
order.cancelledİptal edildiSipariş
return.refundedİade ödendi{return: {number, refund_minor, reason}, order: Sipariş}
product.savedÜrün kaydedildiÜrün (GET /products/{product} ile aynı alanlar)
customer.createdMüşteri oluştuMüşteri (id, name, email, phone, marketing_consent, created_at)
Örnek gövde
{
  "id": "0b8f6c1e-5d1a-4c57-9a43-2f1d6f0c9e11",
  "event": "order.paid",
  "created_at": "2026-11-12T13:41:00+03:00",
  "data": {
    "number": 1042,
    "status": "to_ship",
    "status_label": "Kargoya verilecek",
    "payment_method": "card",
    "source": "storefront",
    "channel": null,
    "external_id": null,
    "customer": {
      "name": "Ayşe Yılmaz",
      "email": "ayse@ornek.com",
      "phone": "+905321112233"
    },
    "shipping_address": {
      "name": "Ayşe Yılmaz",
      "phone": "+905321112233",
      "line1": "Bağdat Cad. 12/3",
      "district": "Kadıköy",
      "city": "İstanbul",
      "zip": "34710",
      "country": "TR"
    },
    "billing_address": null,
    "currency": "TRY",
    "subtotal_minor": 19990,
    "discount_minor": 0,
    "shipping_minor": 4990,
    "cod_fee_minor": 0,
    "tax_minor": 3332,
    "total_minor": 24980,
    "commission_minor": 0,
    "coupon_code": null,
    "items": [
      {
        "sku": "KUPA-MAVI",
        "title": "Seramik Kupa",
        "variant": "Mavi",
        "quantity": 1,
        "unit_price_minor": 19990,
        "total_minor": 19990,
        "tax_rate_bp": 2000
      }
    ],
    "delivery_method": "cargo",
    "delivery_date": null,
    "carrier": null,
    "tracking_number": null,
    "note": null,
    "created_at": "2026-11-12T13:40:00+03:00",
    "paid_at": "2026-11-12T13:41:00+03:00",
    "shipped_at": null,
    "delivered_at": null,
    "cancelled_at": null,
    "updated_at": "2026-11-12T13:41:00+03:00"
  }
}

Entegrasyonunuzu Birlikte Yayınlayalım

Uygulama geliştirici ve çözüm ortağı başvuruları bir hafta içinde yanıtlanır.

0850 307 11 17 · Hafta içi 09.00–18.00