Tüm PHP, Next.js, React, Vue, Python veya mobil projelerinizden tek tıkla canlı destek talepleri toplayın, listeleyin ve yönetin.
Sınırsız sayıda web sitesi ve mobil uygulamayı tek bir destek panelinden API key’ler ile bağımsız olarak yönetin.
X-API-Key tabanlı yetkilendirme ile projeniz haricinde kimse verilerinize erişemez. Verileriniz tamamen izoledir.
İsterseniz 1 satır script ile canlı destek sohbet penceresi ekleyin, isterseniz kendi projenizde özel ekranlar tasarlayın.
Uygulamalarınızdan istek atarak talep oluşturma, listeleme, detay görme ve yanıt gönderme rehberi
https://destek.sensofta.com/api/index.php
X-API-Key: PROJE_API_ANAHTARI
| Metot | Endpoint | İşlev / Açıklama |
|---|---|---|
| POST | /tickets |
Yeni bir destek talebi (bilet) oluşturur. |
| GET | /tickets |
Projenize ait tüm talepleri filtreleme ve sayfalama ile getirir. |
| GET | /tickets/{id} |
Talep detayını, müşteri ve temsilci mesaj geçmişini ve ekleri getirir. |
| POST | /tickets/{id}/messages |
Mevcut talebe yeni müşteri/sistem yanıtı ekler. |
| POST | /upload |
Taleplere veya mesajlara eklenecek resim/dosya yükler. |
POST /api/index.php/tickets
Headers:
X-API-Key: PROJE_API_ANAHTARI
Content-Type: application/json
Body:
{
"subject": "Giriş Sayfası Hatası",
"message": "<p>Kullanıcılar giriş yapamıyor.</p>",
"priority": "high",
"email": "musteri@ornek.com",
"name": "Ahmet Yılmaz",
"client_identifier": "user_12345"
}
const axios = require('axios');
async function createTicket() {
const response = await axios.post('https://destek.sensofta.com/api/index.php/tickets', {
subject: 'Giriş Sayfası Hatası',
message: '<p>Kullanıcılar giriş yapamıyor.</p>',
email: 'musteri@ornek.com',
name: 'Ahmet Yılmaz',
priority: 'high',
client_identifier: 'user_12345'
}, {
headers: {
'X-API-Key': 'PROJE_API_ANAHTARI',
'Content-Type': 'application/json'
}
});
console.log(response.data);
}
// React / Next.js Destek Formu Gönderimi
const res = await fetch('https://destek.sensofta.com/api/index.php/tickets', {
method: 'POST',
headers: {
'X-API-Key': 'PROJE_API_ANAHTARI',
'Content-Type': 'application/json'
},
body: JSON.stringify({
subject: 'Ödeme Sorunu',
message: '<p>Kredi kartı işlem hatası.</p>',
email: 'musteri@ornek.com',
name: 'Mehmet Demir',
priority: 'urgent'
})
});
const data = await res.json();
<?php
$ch = curl_init('https://destek.sensofta.com/api/index.php/tickets');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: PROJE_API_ANAHTARI',
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => json_encode([
'subject' => 'Teknik Destek Talebi',
'message' => '<p>Sunucu erişim sorunu.</p>',
'email' => 'musteri@ornek.com',
'name' => 'Ali Kaya',
'priority' => 'medium'
])
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
import requests
url = "https://destek.sensofta.com/api/index.php/tickets"
headers = {
"X-API-Key": "PROJE_API_ANAHTARI",
"Content-Type": "application/json"
}
payload = {
"subject": "Otomatik Sistem Raporu",
"message": "<p>Günlük veritabanı yedeği alındı.</p>",
"email": "bot@ornek.com",
"name": "Sistem Botu",
"priority": "low"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
GET /api/index.php/tickets?status=open&page=1&limit=20 Headers: X-API-Key: PROJE_API_ANAHTARI Parametreler: status: open | pending | waiting_customer | waiting_agent | resolved | closed search: Konu/mesaj içeriğinde arama page: Sayfa numarası (varsayılan: 1) limit: Sayfa başı kayıt sayısı (varsayılan: 20)
const axios = require('axios');
async function listTickets() {
const response = await axios.get('https://destek.sensofta.com/api/index.php/tickets', {
headers: { 'X-API-Key': 'PROJE_API_ANAHTARI' },
params: { status: 'open', page: 1, limit: 20 }
});
console.log('Talepler:', response.data.data.data);
}
// Next.js / React Müşteri Destek Geçmişi Ekranı
const res = await fetch('https://destek.sensofta.com/api/index.php/tickets?status=open&page=1', {
headers: { 'X-API-Key': 'PROJE_API_ANAHTARI' }
});
const { data } = await res.json();
const tickets = data.data; // Destek talepleri dizisi
const pagination = data.pagination; // Toplam sayfa ve kayıt metadataları
<?php
$ch = curl_init('https://destek.sensofta.com/api/index.php/tickets?status=open&limit=10');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Key: PROJE_API_ANAHTARI']
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
$tickets = $result['data']['data'] ?? [];
import requests
url = "https://destek.sensofta.com/api/index.php/tickets"
headers = {"X-API-Key": "PROJE_API_ANAHTARI"}
params = {"status": "open", "page": 1, "limit": 20}
response = requests.get(url, headers=headers, params=params)
tickets = response.json().get("data", {}).get("data", [])
GET /api/index.php/tickets/1
Headers:
X-API-Key: PROJE_API_ANAHTARI
Yanıt:
{
"success": true,
"data": {
"ticket": {
"id": 1,
"ticket_id": "SUP-0001",
"subject": "Giriş Sayfası Hatası",
"status": "open",
"messages": [
{ "id": 1, "message": "<p>Mesaj detay...</p>", "created_at": "..." }
],
"attachments": []
}
}
}
const axios = require('axios');
async function getTicket(ticketId) {
const response = await axios.get(`https://destek.sensofta.com/api/index.php/tickets/${ticketId}`, {
headers: { 'X-API-Key': 'PROJE_API_ANAHTARI' }
});
console.log(response.data.data.ticket);
}
// Next.js / React Ticket View Ekranı
async function fetchTicketDetail(ticketId) {
const res = await fetch(`https://destek.sensofta.com/api/index.php/tickets/${ticketId}`, {
headers: { 'X-API-Key': 'PROJE_API_ANAHTARI' }
});
const { data } = await res.json();
return data.ticket; // ticket.messages dizisi mesajlaşma geçmişini içerir
}
<?php
$ticketId = 1;
$ch = curl_init("https://destek.sensofta.com/api/index.php/tickets/{$ticketId}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Key: PROJE_API_ANAHTARI']
]);
$ticket = json_decode(curl_exec($ch), true)['data']['ticket'];
curl_close($ch);
import requests
ticket_id = 1
url = f"https://destek.sensofta.com/api/index.php/tickets/{ticket_id}"
headers = {"X-API-Key": "PROJE_API_ANAHTARI"}
response = requests.get(url, headers=headers)
ticket = response.json().get("data", {}).get("ticket", {})
POST /api/index.php/tickets/1/messages
Headers:
X-API-Key: PROJE_API_ANAHTARI
Content-Type: application/json
Body:
{
"message": "<p>Teşekkürler, sorunu çözdüm.</p>",
"email": "musteri@ornek.com",
"name": "Ahmet Yılmaz"
}
const axios = require('axios');
async function addReply(ticketId) {
const response = await axios.post(`https://destek.sensofta.com/api/index.php/tickets/${ticketId}/messages`, {
message: '<p>Sorun devam ediyor, tekrar bakar mısınız?</p>',
email: 'musteri@ornek.com'
}, {
headers: {
'X-API-Key': 'PROJE_API_ANAHTARI',
'Content-Type': 'application/json'
}
});
console.log(response.data);
}
const res = await fetch(`https://destek.sensofta.com/api/index.php/tickets/${ticketId}/messages`, {
method: 'POST',
headers: {
'X-API-Key': 'PROJE_API_ANAHTARI',
'Content-Type': 'application/json'
},
body: JSON.stringify({
message: '<p>Müşteri yeni yanıtı...</p>',
email: 'musteri@ornek.com'
})
});
const data = await res.json();
<?php
$ticketId = 1;
$ch = curl_init("https://destek.sensofta.com/api/index.php/tickets/{$ticketId}/messages");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: PROJE_API_ANAHTARI',
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => json_encode([
'message' => '<p>Yanıt mesajı...</p>',
'email' => 'musteri@ornek.com'
])
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
import requests
ticket_id = 1
url = f"https://destek.sensofta.com/api/index.php/tickets/{ticket_id}/messages"
headers = {
"X-API-Key": "PROJE_API_ANAHTARI",
"Content-Type": "application/json"
}
payload = {
"message": "<p>Yanıt içeriği</p>",
"email": "musteri@ornek.com"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
POST /api/index.php/upload Headers: X-API-Key: PROJE_API_ANAHTARI Content-Type: multipart/form-data Form Data: file: [GÖRSEL/DOKÜMAN DOSYASI]
const FormData = require('form-data');
const fs = require('fs');
const axios = require('axios');
async function uploadFile() {
const form = new FormData();
form.append('file', fs.createReadStream('./hata.png'));
const response = await axios.post('https://destek.sensofta.com/api/index.php/upload', form, {
headers: {
'X-API-Key': 'PROJE_API_ANAHTARI',
...form.getHeaders()
}
});
console.log('Dosya ID:', response.data.data.id);
}
const formData = new FormData();
formData.append('file', fileInput.files[0]);
const res = await fetch('https://destek.sensofta.com/api/index.php/upload', {
method: 'POST',
headers: { 'X-API-Key': 'PROJE_API_ANAHTARI' },
body: formData
});
const { data } = await res.json();
// data.id bilgisini talebe attachments dizisi olarak geçebilirsiniz
<?php
$ch = curl_init('https://destek.sensofta.com/api/index.php/upload');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Key: PROJE_API_ANAHTARI'],
CURLOPT_POSTFIELDS => [
'file' => new CURLFile('/yol/dosya.png')
]
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
import requests
url = "https://destek.sensofta.com/api/index.php/upload"
headers = {"X-API-Key": "PROJE_API_ANAHTARI"}
files = {"file": open("ekran_goruntusu.png", "rb")}
response = requests.post(url, headers=headers, files=files)
print(response.json())
Web sitelerinizin sağ alt köşesine hazır sohbet butonu eklemek için aşağıdaki script kodunu </body> etiketinden önce yapıştırın.
<script src="<?= APP_URL ?>/widget/embed.php?project_key=PROJE_API_ANAHTARI"></script> <link rel="stylesheet" href="<?= APP_URL ?>/assets/css/widget.css">