API Referansı

Kiracı API'sını kullanarak enuchat'ı sistemlerinize entegre edin. Konuşmaları yönetin, mesaj gönderin ve faturalandırma verilerine programatik olarak erişin.

Kimlik Doğrulama

Tüm API istekleri X-Api-Key başlığında gönderilen bir API anahtarıyla doğrulanır.

API anahtarınızı alma

  1. Panelinizde Ayarlar → API Anahtarları'na gidin
  2. API Anahtarı Oluştur'a tıklayın ve bir ad verin
  3. Anahtarı hemen kopyalayın — yalnızca bir kez gösterilir
  4. Güvenli bir şekilde saklayın (ortam değişkeni, gizli bilgi yöneticisi)

İstek yapma

Her istekte anahtarı ekleyin:

curl -H "X-Api-Key: tak_your_key_here" \
     https://api.enuchat.com/api/v1/tenant-api/widgets

Tüm yanıtlar JSON formatındadır. Başarılı yanıtlarda data alanı bulunur. Hatalarda code ve message içeren bir error alanı bulunur.

Güvenlik: API anahtarları veritabanımızda karmalanır (SHA-256). Ham anahtarı asla saklamayız. Anahtarınızı bir parola gibi değerlendirin — koda eklemeyin veya herkese açık paylaşmayın.

Temel URL

https://api.enuchat.com/api/v1/tenant-api

Aşağıdaki tüm endpoint'ler bu temel URL'ye görelidir.

Endpoint'ler

GET /widgets

Hesabınızdaki tüm bileşenleri listeler.

Yanıt

{'{'}
  "data": [
{'{'}
      "id": "019d19c6-7e0b-...",
      "name": "Main Website Chat",
      "isActive": true,
      "aiEnabled": true,
      "translationEnabled": true,
      "primaryColor": "#2563eb",
      "position": "bottom-right"
    }
  ]
}

GET /conversations

Konuşmaları en son mesaja göre sıralı listeler.

Sorgu Parametreleri

ParametreTürAçıklama
statusstringDuruma göre filtrele: open, pending, closed
widgetIdstringBileşen UUID'sine göre filtrele
limitintegerMaksimum sonuç (varsayılan 20, maks 100)
offsetintegerN sonucu atla

Örnek

curl -H "X-Api-Key: tak_..." \
     "https://api.enuchat.com/api/v1/tenant-api/conversations?status=open&limit=10"

Yanıt

{'{'}
  "data": [
{'{'}
      "id": "019d6724-000e-...",
      "widgetId": "019d19c6-7e0b-...",
      "visitorId": "v-abc123",
      "visitorName": "John",
      "visitorEmail": "john{'@'}example.com",
      "visitorLanguage": "en",
      "status": "open",
      "assignedTo": null,
      "lastMessageAt": "2026-04-11T14:30:00+00:00",
      "startedAt": "2026-04-11T14:25:00+00:00"
    }
  ]
}

GET /conversations/{'{'}id}

Tüm mesajlarıyla birlikte bir konuşma getirir.

Sorgu Parametreleri

ParametreTürAçıklama
limitintegerMaksimum mesaj (varsayılan 50, maks 200)

Yanıt

{'{'}
  "data": {'{'}
    "id": "019d6724-000e-...",
    "visitorLanguage": "en",
    "status": "open",
    "messages": [
{'{'}
        "id": "019d6724-1234-...",
        "role": "visitor",
        "content": "Hello, how much does it cost?",
        "contentLanguage": "en",
        "translatedContent": "Cześć, ile to kosztuje?",
        "translatedLanguage": "pl",
        "isAutoReply": false,
        "createdAt": "2026-04-11T14:25:30+00:00"
      },
{'{'}
        "id": "019d6724-5678-...",
        "role": "ai",
        "content": "Our plans start at €19/month...",
        "isAutoReply": true,
        "createdAt": "2026-04-11T14:25:32+00:00"
      }
    ]
  }
}

POST /conversations/{'{'}id}/messages

Bir konuşmaya mesaj gönderir. Mesaj sohbet bileşeni üzerinden ziyaretçiye gerçek zamanlı iletilir.

İstek Gövdesi

{'{'}
  "content": "Thanks for reaching out! We'll process your request.",
  "role": "system"
}
AlanTürAçıklama
contentstringZorunlu. Mesaj metni.
rolestringsystem (varsayılan) veya operator

Yanıt (201 Created)

{'{'}
  "data": {'{'}
    "id": "019d6725-abcd-...",
    "role": "system",
    "content": "Thanks for reaching out!",
    "createdAt": "2026-04-11T14:35:00+00:00"
  }
}

PATCH /conversations/{'{'}id}

Bir konuşmanın durumunu veya atamasını günceller.

İstek Gövdesi

{'{'}
  "status": "closed"
}
AlanTürAçıklama
statusstringopen, pending veya closed
assignedTostring|nullAtanacak operatör UUID'si veya atamayı kaldırmak için null

GET /billing/balance

Mevcut planınızı ve kredi bakiyenizi getirir.

Yanıt

{'{'}
  "data": {'{'}
    "plan": "pro",
    "creditBalance": 4500000,
    "totalCreditsAdded": 10000000
  }
}

Hata Yönetimi

Hatalar, JSON gövdesiyle birlikte 2xx olmayan bir durum kodu döndürür:

{'{'}
  "error": {'{'}
    "code": "NOT_FOUND",
    "message": "Conversation not found."
  }
}
HTTP Durum KoduAnlam
401Geçersiz, süresi dolmuş veya eksik API anahtarı
400Geçersiz istek gövdesi veya parametreler
404Kaynak bulunamadı (veya farklı bir kiracıya ait)
500Sunucu hatası

Yaygın Kullanım Alanları

CRM Entegrasyonu

Yeni konuşmaları sorgulayın ve ziyaretçi verilerini (ad, e-posta, dil) CRM'inize senkronize edin. Harici referans olarak konuşma kimliğini kullanın.

Otomatik Takipler

Bir konuşma kapatıldıktan sonra API üzerinden takip mesajı gönderin: "Sohbet ettiğiniz için teşekkürler! Yardımcı olabileceğimiz başka bir konu var mı?"

Webhook Alternatifi

Giden webhook'lar kullanılabilir olana kadar, yeni mesajları veya durum değişikliklerini algılamak için konuşmalar endpoint'ini düzenli aralıklarla sorgulayın.

Toplu İşlemler

7 günden eski tüm konuşmaları kapatın, harici mantığa göre konuşmaları operatörlere atayın veya analiz için konuşma geçmişini dışa aktarın.

Hız Limitleri

API, API anahtarı başına dakikada en fazla 60 istek yapılmasına izin verir. Bu limiti aşarsanız 429 Too Many Requests yanıtı alırsınız. Bekleyin ve üstel geri çekilme ile yeniden deneyin.

Entegrasyona hazır mısınız?

Ücretsiz hesabınızı oluşturun ve dakikalar içinde bir API anahtarı oluşturun.

Ücretsiz Başlayın