API Dokümantasyonu & Genel Bakış
GelsinSatışlar Public REST API, e-ticaret altyapılarınızı (ikas, Shopify, WooCommerce), ön muhasebe sistemlerinizi ve özel yazılımlarınızı WhatsApp CRM panonuza bağlamanızı sağlar.
Hızlı Başlangıç (Quick Start)
API'yı kullanmaya başlamak için aşağıdaki adımları izleyin:
API Anahtarı Oluşturun
GelsinSatışlar panosundan Ayarlar → API Anahtarları → Yeni API Anahtarı yolunu izleyerek anahtarınızı oluşturun. Anahtar yalnızca bir kez gösterilir.
Test İsteği Gönderin
Aşağıdaki komutu terminale yapıştırarak anahtarınızın çalıştığını doğrulayın:
curl -X GET "https://gelsinsatislar.com/api/v1/me" \
-H "Authorization: Bearer gelsinsatislar_live_YOUR_API_KEY" \
-H "Content-Type: application/json"Başarılı yanıt alırsanız, API anahtarınız aktif ve doğru kapsamlara sahip demektir. Artık mesaj gönderme, müşteri yönetimi ve kampanya başlatma uç noktalarını kullanabilirsiniz.
Temel Kavramlar
API'yı etkin bir şekilde kullanabilmek için aşağıdaki kavramları tanımanız önerilir:
Uç Nokta (Endpoint)
Her API operasyonunun erişildiği belirli bir URL adresi. Örneğin /api/v1/messages mesaj gönderme uç noktasıdır.
API Anahtarı (Bearer Token)
İsteklerinizi yetkilendirmek için kullandığınız kimlik bilgisi. Her istekte iletilerek talebin sizden geldiğini doğrular.
JSON
Veri alışverişinde kullanılan standart UTF-8 metin tabanlı format. Tüm istek ve yanıtlar JSON olarak gönderilir ve alınır.
1. Base URL (Temel Adres)
Tüm API istekleri güvenli HTTPS protokolü üzerinden aşağıdaki kök adrese yapılır:
2. Kimlik Doğrulama (Authentication)
Tüm API istekleri kimlik doğrulaması gerektirir. Her istekte HTTP Authorization başlığında (Header) API anahtarınızı iletmeniz gerekmektedir:
curl -X GET "https://gelsinsatislar.com/api/v1/me" \
-H "Authorization: Bearer gelsinsatislar_live_9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c" \
-H "Content-Type: application/json"API anahtarları hesabınıza tam erişim yetkisine sahip olabilir. Anahtarınızı asla istemci tarafı (frontend / mobile app) kodlarında açık şekilde saklamayın. Yalnızca sunucu tarafında (Backend / Webhook) kullanın.
Kapsam (Scope) Referansı
Her API anahtarı yalnızca kendisine atanan kapsam (...) ile çalışır. Gereksiz kapsam vermekten kaçının:
| Kapsam | İzin Verir |
|---|---|
| messages:send | WhatsApp mesajı gönderme |
| messages:read | Mesajları ve iletim durumlarını okuma |
| contacts:read | Müşterileri listeleme ve okuma |
| contacts:write | Müşteri oluşturma ve güncelleme |
| conversations:read | Sohbetleri listeleme ve okuma |
| broadcasts:send | Toplu kampanya başlatma |
| broadcasts:read | Kampanya durumunu okuma |
| webhooks:manage | Webhook uç noktalarını yönetme |
3. Standart Yanıt Formatı (Envelope Pattern)
GelsinSatışlar API'sinden dönen tüm başarılı ve hatalı yanıtlar tutarlı bir JSON zarfı (envelope) içinde sunulur. Bu yapı, istemci tarafında tutarlı hata yönetimi ve veri işleme sağlar.
Başarılı Yanıt (200 / 201)
{
"data": {
"message_id": "msg_94821a",
"status": "sent",
"to": "+905320000000"
},
"error": null
}Hatalı Yanıt (400 / 401 / 429)
{
"data": null,
"error": {
"code": "invalid_phone_number",
"message": "Telefon numarası E.164 formatında olmalıdır."
}
}4. HTTP Durum & Hata Kodları
API, HTTP durum kodları kullanarak isteklerin sonucunu belirtir. Aşağıdaki tabloda karşılaşılabilecek durum kodları ve anlamları yer almaktadır:
| HTTP Kod | Durum | Açıklama |
|---|---|---|
| 200 OK | Başarılı | İstek başarıyla işlendi ve veri döndü. |
| 201 Created | Oluşturuldu | Yeni bir mesaj veya müşteri kaynağı başarıyla oluşturuldu. |
| 400 Bad Request | Hatalı İstek | Eksik parametre, E.164 formatına uymayan telefon numarası veya geçersiz JSON gövdesi. |
| 401 Unauthorized | Yetkisiz | Geçersiz API anahtarı veya yetersiz kapsam (scope) erişimi. |
| 429 Too Many Requests | Hız Sınırı Aşımı | Dakikalık istek limitine ulaşıldı. Bir süre bekleyip tekrar deneyin. |
Alan Hata Kodları (Domain Error Codes)
HTTP durum kodlarına ek olarak, yanıt gövdesindeki error.code alanı bölümeye özel hata bilgisi sağlar. Aşağıdaki kodlar stabil olup programatik olarak güvenle kullanılabilir:
| Hata Kodu | HTTP | Açıklama |
|---|---|---|
| unauthorized | 401 | Eksik, hatalı biçimde yazılmış, bilinmeyen, iptal edilmiş veya süresi dolmuş API anahtarı. |
| forbidden | 403 | Geçerli anahtar ancak gerekli kapsama (scope) sahip değil. |
| rate_limited | 429 | Anahtar başına hız sınırı aşıldı. |
| bad_request | 400 | Geçersiz istek formatı veya eksik parametre. |
| not_found | 404 | Belirtilen kaynak bulunamadı veya farklı bir hesaba ait. |
| internal | 500 | Sunucu tarafı beklenmeyen hata. |
| whatsapp_not_configured | 400 | WhatsApp yapılandırması yapılmamış (yalnızca mesaj gönderme). |
| meta_error | 502 | İstek Meta'ya ulaştı ancak Meta tarafından reddedildi. |
| template_malformed | 500 | Şablon mesaj yapısı hatalı (yalnızca template gönderimleri). |
5. Sayfalama ve Keyset Cursor
Müşteri ve sohbet gibi uzun listeler tek seferde döndürülmez. Sonuçlar sayfa sayfa sunulur; her yanıt, bir sonraki sayfaya geçmek için kullanacağınız bir cursor (imleç) değeri döndürür.
# İlk sayfa: 50 kayıt iste
curl -X GET "https://gelsinsatislar.com/api/v1/contacts?limit=50" \
-H "Authorization: Bearer gelsinsatislar_live_YOUR_API_KEY"
# Yanıttaki next_cursor değerini alarak ikinci sayfaya geç
curl -X GET "https://gelsinsatislar.com/api/v1/contacts?limit=50&cursor=eyJvZmZzZXQiOjUwfQ" \
-H "Authorization: Bearer gelsinsatislar_live_YOUR_API_KEY"6. Hız Sınırı (Rate Limit)
API istekleri anahtar bazlı (per-key) olarak dakikada 120 istek ile sınırlandırılmıştır. Bu sınır, saniyede yaklaşık 2 istek anlamına gelir ve çoğu entegrasyon ve otomasyon senaryosu için yeterlidir.
| Başlık | Açıklama |
|---|---|
| X-RateLimit-Limit | Pencere içinde izin verilen toplam istek sayısı. |
| X-RateLimit-Remaining | Mevcut pencere içinde kalan istek hakkı. |
| X-RateLimit-Reset | Pencerenin sıfırlanacağı Unix zaman damgası (saniye). |
| Retry-After | Yeniden deneme için beklenmesi gereken süre (saniye). Yalnızca 429 yanıtlarında döner. |
{
"data": null,
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded for this API key"
}
}