Introduction
SMS Merkezi REST API v1 — Profesyonel toplu SMS gönderimi, raporlama, kontak ve şablon yönetimi için RESTful API.
Bu dokümantasyon SMS Merkezi REST API v1 ile entegrasyon için ihtiyacınız olan tüm bilgileri içerir.
**Temel Özellikler:**
- Sanctum Bearer Token kimlik doğrulama (panel'den oluşturulur)
- Endpoint başına ability (yetki) bazlı erişim (örn. `sms.send`, `contacts.read`)
- 60 istek/dakika varsayılan rate limit (sms-send için 30/dk)
- Türk operatörü uyumlu (Kobikom + NetGSM gateway desteği)
- HMAC-SHA256 imzalı outbound webhook (DLR push)
- RFC 7807 Problem Details standardında hata yanıtları
- X-RateLimit-* header'ları ile şeffaf kota takibi
<aside><b>Hızlı başlangıç:</b> Panel → Ayarlar → API Token sekmesinden token oluşturun, ardından <code>Authorization: Bearer <token></code> header'ı ile istek atın.</aside>
<aside>Sağdaki kod alanında her endpoint için cURL ve JavaScript örneklerini görebilirsiniz. Üstteki sekmelerden dil değiştirebilirsiniz.</aside>
Authenticating requests
To authenticate requests, include an Authorization header with the value "Bearer {API_TOKEN}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
Token oluşturmak için panel'e giriş yapın → Ayarlar → API Token → Yeni Token Oluştur. Oluşturulan token'ı güvenli bir yerde saklayın (sadece bir kez gösterilir).
Sistem
API Durumu
Public health/status endpoint — auth gerekmez. SaaS müşterileri için "API ayakta mı?" sorusuna cevap; statuspage.io gibi izleme servislerine de bağlanabilir. Gateway durumu config/sms.php'den çekilir; canlı gateway probu Faz 5+'da eklenecek.
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/status" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/status"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/status';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/status'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Başarılı):
{
"service": "smsmerkezi-api",
"version": "v1",
"release": "1.0.0",
"env": "production",
"time": "2026-05-07T10:23:45+00:00",
"default_gateway": "kobikom",
"gateways": [
{
"slug": "kobikom",
"status": "operational"
},
{
"slug": "netgsm",
"status": "operational"
},
{
"slug": "mock",
"status": "operational"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
SMS Gönderim
SMS Gönder
requires authentication
Tek istekte 1..1000 alıcıya SMS gönderir. Eşzamansız (async) çalışır:
202 yanıtı gelince kuyruğa alınmıştır, gerçek durum için
GET /v1/sms/{id} ile takip edin.
KVKK opt-out filtresi otomatik uygulanır. Bakiye yetersizse 422 döner.
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/sms/send" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"body\": \"Merhaba, randevunuz yarın saat 14:00\'tedir.\",
\"recipients\": [
\"+905551112233\",
\"+905551112244\"
],
\"originator\": \"SMSMERKEZI\",
\"scheduled_at\": \"2026-12-31T20:00:00+03:00\",
\"gateway\": \"kobikom\",
\"meta\": {
\"campaign_id\": 42,
\"ref\": \"order-12345\"
}
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/sms/send"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"body": "Merhaba, randevunuz yarın saat 14:00'tedir.",
"recipients": [
"+905551112233",
"+905551112244"
],
"originator": "SMSMERKEZI",
"scheduled_at": "2026-12-31T20:00:00+03:00",
"gateway": "kobikom",
"meta": {
"campaign_id": 42,
"ref": "order-12345"
}
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/sms/send';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'body' => 'Merhaba, randevunuz yarın saat 14:00\'tedir.',
'recipients' => [
'+905551112233',
'+905551112244',
],
'originator' => 'SMSMERKEZI',
'scheduled_at' => '2026-12-31T20:00:00+03:00',
'gateway' => 'kobikom',
'meta' => [
'campaign_id' => 42,
'ref' => 'order-12345',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/sms/send'
payload = {
"body": "Merhaba, randevunuz yarın saat 14:00'tedir.",
"recipients": [
"+905551112233",
"+905551112244"
],
"originator": "SMSMERKEZI",
"scheduled_at": "2026-12-31T20:00:00+03:00",
"gateway": "kobikom",
"meta": {
"campaign_id": 42,
"ref": "order-12345"
}
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (202, Başarılı kuyruğa alındı):
{
"data": {
"id": 123456,
"uuid": "9c7e4a2f-1b3d-4e5f-9a8b-7c6d5e4f3a2b",
"body": "Merhaba, randevunuz yarın saat 14:00'tedir.",
"originator": "SMSMERKEZI",
"status": "queued",
"parts": 1,
"encoding": "GSM7",
"recipients_count": 2,
"scheduled_at": null,
"gateway": "kobikom",
"created_at": "2026-05-07T10:23:45+00:00"
}
}
Example response (403, Token yetkisi yok):
{
"type": "https://smsmerkezi.net/errors/forbidden",
"title": "Forbidden",
"status": 403,
"detail": "Bu token \"sms:send\" yetkisine sahip değil.",
"instance": "/v1/sms/send"
}
Example response (422, Validasyon veya bakiye hatası):
{
"type": "https://smsmerkezi.net/errors/invalid-request",
"title": "Invalid Request",
"status": 422,
"detail": "Yetersiz bakiye. Mevcut: 50, Gereken: 200.",
"instance": "/v1/sms/send"
}
Example response (429, Rate limit (sms-send: 30/dk)):
{
"type": "https://smsmerkezi.net/errors/rate-limit",
"title": "Too Many Requests",
"status": 429,
"detail": "İstek limiti aşıldı. 60 saniye sonra tekrar deneyin.",
"retry_after": 60
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
SMS Raporlama
SMS Detay
requires authentication
Belirli bir SMS mesajının detaylarını ve alıcı durumlarını döner. Multi-tenant izolasyon otomatik uygulanır: başka tenant'a ait mesajlar 404 verir.
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/sms/123456" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/sms/123456"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/sms/123456';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/sms/123456'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Başarılı):
{
"data": {
"id": 123456,
"uuid": "9c7e4a2f-1b3d-4e5f-9a8b-7c6d5e4f3a2b",
"body": "Merhaba, randevunuz yarın saat 14:00'tedir.",
"originator": "SMSMERKEZI",
"status": "delivered",
"parts": 1,
"encoding": "GSM7",
"recipients_count": 2,
"gateway": "kobikom",
"scheduled_at": null,
"sent_at": "2026-05-07T10:23:46+00:00",
"created_at": "2026-05-07T10:23:45+00:00",
"recipients": [
{
"msisdn": "+90555***2233",
"status": "delivered",
"delivered_at": "2026-05-07T10:23:51+00:00",
"error_code": null
},
{
"msisdn": "+90555***2244",
"status": "delivered",
"delivered_at": "2026-05-07T10:23:52+00:00",
"error_code": null
}
]
}
}
Example response (404, Bulunamadı (veya başka tenant)):
{
"type": "https://smsmerkezi.net/errors/not-found",
"title": "Not Found",
"status": 404,
"detail": "Mesaj bulunamadı.",
"instance": "/v1/sms/123456"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
SMS Listesi
requires authentication
Kullanıcının tenant'ına ait SMS mesajlarını cursor pagination ile listeler.
Sıralama: created_at DESC. Cursor pagination kullanılır;
next_cursor alanını sonraki sayfa için ?cursor=
parametresine geçirin.
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/sms?status=delivered&from=2026-05-01T00%3A00%3A00%2B03%3A00&to=2026-05-07T23%3A59%3A59%2B03%3A00&per_page=50&cursor=eyJpZCI6MTIzfQ%3D%3D" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/sms"
);
const params = {
"status": "delivered",
"from": "2026-05-01T00:00:00+03:00",
"to": "2026-05-07T23:59:59+03:00",
"per_page": "50",
"cursor": "eyJpZCI6MTIzfQ==",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/sms';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'status' => 'delivered',
'from' => '2026-05-01T00:00:00+03:00',
'to' => '2026-05-07T23:59:59+03:00',
'per_page' => '50',
'cursor' => 'eyJpZCI6MTIzfQ==',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/sms'
params = {
'status': 'delivered',
'from': '2026-05-01T00:00:00+03:00',
'to': '2026-05-07T23:59:59+03:00',
'per_page': '50',
'cursor': 'eyJpZCI6MTIzfQ==',
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Başarılı liste):
{
"data": [
{
"id": 123456,
"uuid": "9c7e4a2f-1b3d-4e5f-9a8b-7c6d5e4f3a2b",
"body": "Merhaba, randevunuz yarın saat 14:00'tedir.",
"originator": "SMSMERKEZI",
"status": "delivered",
"parts": 1,
"encoding": "GSM7",
"recipients_count": 2,
"gateway": "kobikom",
"created_at": "2026-05-07T10:23:45+00:00"
}
],
"links": {
"first": null,
"last": null,
"prev": null,
"next": "https://api.smsmerkezi.net/v1/sms?cursor=eyJpZCI6MTIzfQ"
},
"meta": {
"path": "https://api.smsmerkezi.net/v1/sms",
"per_page": 20,
"next_cursor": "eyJpZCI6MTIzfQ",
"prev_cursor": null
}
}
Example response (403, Token yetkisi yok):
{
"type": "https://smsmerkezi.net/errors/forbidden",
"title": "Forbidden",
"status": 403,
"detail": "Bu token \"sms:read\" yetkisine sahip değil.",
"instance": "/v1/sms"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Bakiye
Bakiye Sorgula
requires authentication
Tenant'ın güncel SMS kredisi bilgisini döner. Üç değer içerir:
balance— toplam bakiye (kredi cinsinden, 1 SMS = 1 kredi)reserved— kuyrukta bekleyen mesajlar için ayrılmış krediavailable— yeni gönderim için kullanılabilir (balance - reserved)
Çok parçalı (UCS2 veya >160 GSM7) mesajlarda parça sayısı kadar kredi düşer.
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/balance" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/balance"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/balance';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/balance'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Başarılı):
{
"balance": 5000,
"reserved": 120,
"available": 4880,
"currency": "sms"
}
Example response (403, Token yetkisi yok):
{
"type": "https://smsmerkezi.net/errors/forbidden",
"title": "Forbidden",
"status": 403,
"detail": "Bu token \"balance:read\" yetkisine sahip değil.",
"instance": "/v1/balance"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
API Token
Token Listesi
requires authentication
Kullanıcının kendi adına oluşturulmuş tüm API token'larını listeler. Token hash'i veya plain text DEĞER asla dönmez; sadece metadata.
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/tokens" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/tokens"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/tokens';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/tokens'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Başarılı):
{
"data": [
{
"id": 7,
"name": "Üretim CRM Entegrasyonu",
"abilities": [
"sms:send",
"sms:read",
"balance:read"
],
"last_used_at": "2026-05-07T08:45:12+00:00",
"created_at": "2026-04-20T14:22:33+00:00"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Token Oluştur
requires authentication
Yeni bir API token oluşturur. plain_text_token alanı SADECE bu
yanıtta gösterilir; saklamak müşterinin sorumluluğudur. Kayıp token için
yeni bir token oluşturmak ve eskisini revoke etmek gerekir.
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/tokens" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Üretim CRM Entegrasyonu\",
\"abilities\": [
\"sms:send\",
\"sms:read\",
\"balance:read\"
]
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/tokens"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Üretim CRM Entegrasyonu",
"abilities": [
"sms:send",
"sms:read",
"balance:read"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/tokens';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Üretim CRM Entegrasyonu',
'abilities' => [
'sms:send',
'sms:read',
'balance:read',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/tokens'
payload = {
"name": "Üretim CRM Entegrasyonu",
"abilities": [
"sms:send",
"sms:read",
"balance:read"
]
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (201, Başarılı oluşturuldu):
{
"id": 7,
"name": "Üretim CRM Entegrasyonu",
"abilities": [
"sms:send",
"sms:read",
"balance:read"
],
"plain_text_token": "7|aBcD1234eFgH5678iJkL9012mNoP3456qRsT7890"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Token İptal
requires authentication
Belirli bir token'ı kalıcı olarak iptal eder (hard delete). İptal sonrası o token ile yapılan istekler 401 Unauthorized döner.
Example request:
curl --request DELETE \
"https://api.smsmerkezi.net/v1/tokens/7" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/tokens/7"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/tokens/7';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/tokens/7'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (200, Başarılı):
{
"status": "revoked"
}
Example response (404, Token bulunamadı):
{
"type": "https://smsmerkezi.net/errors/not-found",
"title": "Not Found",
"status": 404,
"detail": "Token bulunamadı.",
"instance": "/v1/tokens/7"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin - Audit Log
Audit Log Listesi (Sistem Geneli)
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/admin/audit-logs?tenant_id=16&user_id=16&action=architecto&entity_type=architecto&date_from=architecto&date_to=architecto&cursor=architecto" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/audit-logs"
);
const params = {
"tenant_id": "16",
"user_id": "16",
"action": "architecto",
"entity_type": "architecto",
"date_from": "architecto",
"date_to": "architecto",
"cursor": "architecto",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/audit-logs';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'tenant_id' => '16',
'user_id' => '16',
'action' => 'architecto',
'entity_type' => 'architecto',
'date_from' => 'architecto',
'date_to' => 'architecto',
'cursor' => 'architecto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/audit-logs'
params = {
'tenant_id': '16',
'user_id': '16',
'action': 'architecto',
'entity_type': 'architecto',
'date_from': 'architecto',
'date_to': 'architecto',
'cursor': 'architecto',
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Basarili):
Example response (403, Yetki yok):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin - Failed Jobs
Failed Jobs Listesi
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/admin/failed-jobs?queue=architecto&exception=architecto&from=architecto&to=architecto&page=16" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/failed-jobs"
);
const params = {
"queue": "architecto",
"exception": "architecto",
"from": "architecto",
"to": "architecto",
"page": "16",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/failed-jobs';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'queue' => 'architecto',
'exception' => 'architecto',
'from' => 'architecto',
'to' => 'architecto',
'page' => '16',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/failed-jobs'
params = {
'queue': 'architecto',
'exception': 'architecto',
'from': 'architecto',
'to': 'architecto',
'page': '16',
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Basarili):
Example response (403, Yetki yok):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Failed Job Retry
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/admin/failed-jobs/6ff8f7f6-1eb3-3525-be4a-3932c805afed/retry" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/failed-jobs/6ff8f7f6-1eb3-3525-be4a-3932c805afed/retry"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/failed-jobs/6ff8f7f6-1eb3-3525-be4a-3932c805afed/retry';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/failed-jobs/6ff8f7f6-1eb3-3525-be4a-3932c805afed/retry'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (200, Basarili):
Example response (403, Yetki yok):
Example response (404, Failed job bulunamadi):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Failed Job Forget (Sil)
requires authentication
Example request:
curl --request DELETE \
"https://api.smsmerkezi.net/v1/admin/failed-jobs/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/failed-jobs/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/failed-jobs/6ff8f7f6-1eb3-3525-be4a-3932c805afed';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/failed-jobs/6ff8f7f6-1eb3-3525-be4a-3932c805afed'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (204, Basarili):
Empty response
Example response (403, Yetki yok):
Example response (404, Failed job bulunamadi):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin - Marketing Packages
Paket Listesi (Tum, aktif+pasif)
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/admin/marketing/packages" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/marketing/packages"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/marketing/packages';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/marketing/packages'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
Example response (403, Yetki yok):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Paket Detay
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/admin/marketing/packages/564" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/marketing/packages/564"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/marketing/packages/564';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/marketing/packages/564'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Paket Olustur
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/admin/marketing/packages" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/marketing/packages"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/marketing/packages';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/marketing/packages'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Paket Guncelle
requires authentication
Example request:
curl --request PUT \
"https://api.smsmerkezi.net/v1/admin/marketing/packages/564" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/marketing/packages/564"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "PUT",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/marketing/packages/564';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/marketing/packages/564'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers)
response.json()Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Paket Sil
requires authentication
Example request:
curl --request DELETE \
"https://api.smsmerkezi.net/v1/admin/marketing/packages/564" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/marketing/packages/564"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/marketing/packages/564';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/marketing/packages/564'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (204, Basarili):
Empty response
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
is_active Toggle
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/admin/marketing/packages/564/toggle" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/marketing/packages/564/toggle"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/marketing/packages/564/toggle';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/marketing/packages/564/toggle'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin - Sender ID
Sender ID Listesi (Tum tenant'lar)
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/admin/sender-ids?status=architecto" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/sender-ids"
);
const params = {
"status": "architecto",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/sender-ids';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'status' => 'architecto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/sender-ids'
params = {
'status': 'architecto',
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Basarili):
Example response (403, Yetki yok):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sender ID Onayla
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/admin/sender-ids/564/approve" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/sender-ids/564/approve"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/sender-ids/564/approve';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/sender-ids/564/approve'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (200, Basarili (idempotent: zaten approved ise de 200)):
Example response (403, Yetki yok):
Example response (404, Bulunamadi):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sender ID Reddet
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/admin/sender-ids/564/reject" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"reject_reason\": \"architecto\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/admin/sender-ids/564/reject"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"reject_reason": "architecto"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/sender-ids/564/reject';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'reject_reason' => 'architecto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/sender-ids/564/reject'
payload = {
"reject_reason": "architecto"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200, Basarili):
Example response (403, Yetki yok):
Example response (404, Bulunamadi):
Example response (422, Validation hatasi):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin - Tenant Yonetimi
Tenant Listesi
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/admin/tenants" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/tenants"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/tenants';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/tenants'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
Example response (403, Yetki yok (super_admin gerekli)):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Tenant Detay
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/admin/tenants/564" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/tenants/564"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/tenants/564';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/tenants/564'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
Example response (403, Yetki yok):
Example response (404, Tenant bulunamadi):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
DLR Toggle
requires authentication
Example request:
curl --request PATCH \
"https://api.smsmerkezi.net/v1/admin/tenants/564/dlr" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"enabled\": true
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/admin/tenants/564/dlr"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"enabled": true
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/tenants/564/dlr';
$response = $client->patch(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'enabled' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/tenants/564/dlr'
payload = {
"enabled": true
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()Example response (200, Basarili):
Example response (403, Yetki yok):
Example response (404, Tenant bulunamadi):
Example response (422, Validation hatasi):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Gateway Set
requires authentication
Example request:
curl --request PATCH \
"https://api.smsmerkezi.net/v1/admin/tenants/564/gateway" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"gateway\": \"netgsm\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/admin/tenants/564/gateway"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"gateway": "netgsm"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/tenants/564/gateway';
$response = $client->patch(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'gateway' => 'netgsm',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/tenants/564/gateway'
payload = {
"gateway": "netgsm"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()Example response (200, Basarili):
Example response (403, Yetki yok):
Example response (404, Tenant bulunamadi):
Example response (422, Validation hatasi):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Auth API
Login (mobil/SPA)
requires authentication
Email + sifre ile token alir. 2FA aktif kullanicilar icin "challenge_token" doner; istemci /v1/auth/two-factor/challenge'a kodu gonderir. KVKK onayi eksik kullanicilar 422 + "kvkk_required" doner, /v1/auth/kvkk-consent'e yonlendirilir.
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/auth/login" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"ali@firma.com\",
\"password\": \"GucluParola2026!\",
\"device_name\": \"iPhone 16\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/auth/login"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "ali@firma.com",
"password": "GucluParola2026!",
"device_name": "iPhone 16"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/auth/login';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'email' => 'ali@firma.com',
'password' => 'GucluParola2026!',
'device_name' => 'iPhone 16',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/auth/login'
payload = {
"email": "ali@firma.com",
"password": "GucluParola2026!",
"device_name": "iPhone 16"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (429):
Show headers
content-type: application/problem+json
cache-control: no-cache, private
x-ratelimit-limit: 30
x-ratelimit-remaining: 1
{
"type": "https://smsmerkezi.net/errors/too-many-attempts",
"title": "Too Many Attempts",
"status": 429,
"detail": "Cok fazla deneme. 2 saniye sonra tekrar deneyin.",
"instance": "/v1/auth/login",
"retry_after_seconds": 2
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Register (mobil/SPA)
requires authentication
Yeni tenant + admin user yaratir, KVKK consent timestamp + IP kaydeder, email verification mail tetikler ve token doner.
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/auth/register" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"company_name\": \"Akin Tekstil A.S.\",
\"name\": \"Ali Akin\",
\"email\": \"ali@akintekstil.com\",
\"password\": \"|]|{+-\",
\"phone\": \"+905551234567\",
\"kvkk_consent\": false,
\"device_name\": \"iPhone 16\",
\"password_confirmation\": \"architecto\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/auth/register"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"company_name": "Akin Tekstil A.S.",
"name": "Ali Akin",
"email": "ali@akintekstil.com",
"password": "|]|{+-",
"phone": "+905551234567",
"kvkk_consent": false,
"device_name": "iPhone 16",
"password_confirmation": "architecto"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/auth/register';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'company_name' => 'Akin Tekstil A.S.',
'name' => 'Ali Akin',
'email' => 'ali@akintekstil.com',
'password' => '|]|{+-',
'phone' => '+905551234567',
'kvkk_consent' => false,
'device_name' => 'iPhone 16',
'password_confirmation' => 'architecto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/auth/register'
payload = {
"company_name": "Akin Tekstil A.S.",
"name": "Ali Akin",
"email": "ali@akintekstil.com",
"password": "|]|{+-",
"phone": "+905551234567",
"kvkk_consent": false,
"device_name": "iPhone 16",
"password_confirmation": "architecto"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (422):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 30
x-ratelimit-remaining: 0
{
"message": "parola doğrulaması eşleşmiyor. (and 2 more errors)",
"errors": {
"password": [
"parola doğrulaması eşleşmiyor.",
"parola en az 8 karakter olmalıdır."
],
"kvkk_consent": [
"KVKK aydinlatma metnini onaylamaniz gerekir."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Two-Factor Challenge (mobil/SPA)
requires authentication
/v1/auth/login donen challenge_token ile birlikte TOTP code veya recovery_code gonderilir. Basariliysa token doner.
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/auth/two-factor/challenge" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"challenge_token\": \"architecto\",
\"code\": \"123456\",
\"recovery_code\": \"architecto\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/auth/two-factor/challenge"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"challenge_token": "architecto",
"code": "123456",
"recovery_code": "architecto"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/auth/two-factor/challenge';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'challenge_token' => 'architecto',
'code' => '123456',
'recovery_code' => 'architecto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/auth/two-factor/challenge'
payload = {
"challenge_token": "architecto",
"code": "123456",
"recovery_code": "architecto"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (429):
Show headers
x-ratelimit-limit: 30
x-ratelimit-remaining: 0
retry-after: 0
x-ratelimit-reset: 1778497551
cache-control: no-cache, private
content-type: application/json
{
"message": "Too Many Attempts."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
KVKK Consent (late, mobil/SPA)
requires authentication
Eski/migrate edilmis kullanici KVKK onayi eksikse /login'den donen consent_token ile onay verir. Basariliysa final access token doner.
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/auth/kvkk-consent" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"consent_token\": \"architecto\",
\"kvkk_consent\": false,
\"device_name\": \"architecto\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/auth/kvkk-consent"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"consent_token": "architecto",
"kvkk_consent": false,
"device_name": "architecto"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/auth/kvkk-consent';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'consent_token' => 'architecto',
'kvkk_consent' => false,
'device_name' => 'architecto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/auth/kvkk-consent'
payload = {
"consent_token": "architecto",
"kvkk_consent": false,
"device_name": "architecto"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (429):
Show headers
x-ratelimit-limit: 30
x-ratelimit-remaining: 0
retry-after: 0
x-ratelimit-reset: 1778497551
cache-control: no-cache, private
content-type: application/json
{
"message": "Too Many Attempts."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Logout (mobil/SPA)
requires authentication
Mevcut access token'i kalici olarak iptal eder.
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/auth/logout" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/auth/logout"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/auth/logout';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/auth/logout'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Current User (me)
requires authentication
Mevcut access token'in sahibi user'i + tenant + permissions doner. Flutter init icin zorunlu — splash sonrasi uygulama state'i hidrate edilir.
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/auth/me" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/auth/me"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/auth/me';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/auth/me'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Genel
GET v1/health
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/health" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/health"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/health';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/health'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"status": "ok",
"service": "smsmerkezi-api",
"version": "v1",
"env": "production",
"time": "2026-05-11T14:05:50+03:00",
"phase": "faz5"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Tescil Belgesi Indir (binary stream)
requires authentication
Inertia karsiligindan farkli: Response StreamedResponse, problem+json fallback Request reddedildiginde donulur.
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/admin/sender-ids/564/document" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/admin/sender-ids/564/document"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/admin/sender-ids/564/document';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/admin/sender-ids/564/document'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - 2FA
2FA Durum
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/2fa" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/2fa"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/2fa';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/2fa'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
{
"data": {
"enabled": false,
"pending_confirmation": false,
"recovery_codes_count": 0,
"confirmed_at": null
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
2FA Setup Verisi (QR + secret)
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/2fa/setup" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/2fa/setup"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/2fa/setup';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/2fa/setup'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
Example response (422, Aktif veya pending degil):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
2FA Setup Baslat
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/2fa/enable" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/2fa/enable"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/2fa/enable';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/2fa/enable'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (200, Basarili):
Example response (409, Zaten aktif):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
2FA Onayla
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/2fa/confirm" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"code\": \"123456\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/panel/2fa/confirm"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"code": "123456"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/2fa/confirm';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'code' => '123456',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/2fa/confirm'
payload = {
"code": "123456"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200, Basarili — recovery_codes tek sefer plain):
Example response (409, Zaten aktif):
Example response (422, Kod hatali):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Recovery Kodlari Yenile
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/2fa/recovery-codes/regenerate" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"password\": \"|]|{+-\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/panel/2fa/recovery-codes/regenerate"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"password": "|]|{+-"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/2fa/recovery-codes/regenerate';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'password' => '|]|{+-',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/2fa/recovery-codes/regenerate'
payload = {
"password": "|]|{+-"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200, Basarili):
Example response (422, Sifre hatali / 2FA aktif degil):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
2FA Kapat
requires authentication
Example request:
curl --request DELETE \
"https://api.smsmerkezi.net/v1/panel/2fa" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"password\": \"|]|{+-\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/panel/2fa"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"password": "|]|{+-"
};
fetch(url, {
method: "DELETE",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/2fa';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'password' => '|]|{+-',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/2fa'
payload = {
"password": "|]|{+-"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers, json=payload)
response.json()Example response (200, Basarili):
Example response (422, Sifre hatali):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - Audit Log
Audit Log Listesi
requires authentication
Tenant'in kendi olay izi (login, sms.send, contact.created, vs.).
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/audit-logs?user_id=12&action=login&entity_type=Contact&date_from=2026-05-01&date_to=2026-05-11&per_page=100&cursor=eyJpZCI6OTl9" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/audit-logs"
);
const params = {
"user_id": "12",
"action": "login",
"entity_type": "Contact",
"date_from": "2026-05-01",
"date_to": "2026-05-11",
"per_page": "100",
"cursor": "eyJpZCI6OTl9",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/audit-logs';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'user_id' => '12',
'action' => 'login',
'entity_type' => 'Contact',
'date_from' => '2026-05-01',
'date_to' => '2026-05-11',
'per_page' => '100',
'cursor' => 'eyJpZCI6OTl9',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/audit-logs'
params = {
'user_id': '12',
'action': 'login',
'entity_type': 'Contact',
'date_from': '2026-05-01',
'date_to': '2026-05-11',
'per_page': '100',
'cursor': 'eyJpZCI6OTl9',
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Basarili):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Audit Log Detay
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/audit-logs/1" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/audit-logs/1"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/audit-logs/1';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/audit-logs/1'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
Example response (404, Bulunamadi):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - Ayarlar
Ayarlar Ozeti
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/settings" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/settings"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/settings';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/settings'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
{
"data": {
"tenant": {},
"user": {},
"settings": {}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Profil Guncelle
requires authentication
Example request:
curl --request PUT \
"https://api.smsmerkezi.net/v1/panel/settings/profile" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Ahmet Yilmaz\",
\"tenant_name\": \"ABC Sirket\",
\"default_originator\": \"ABCSIRKET\",
\"webhook_url\": \"https:\\/\\/example.com\\/wh\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/panel/settings/profile"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Ahmet Yilmaz",
"tenant_name": "ABC Sirket",
"default_originator": "ABCSIRKET",
"webhook_url": "https:\/\/example.com\/wh"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/settings/profile';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Ahmet Yilmaz',
'tenant_name' => 'ABC Sirket',
'default_originator' => 'ABCSIRKET',
'webhook_url' => 'https://example.com/wh',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/settings/profile'
payload = {
"name": "Ahmet Yilmaz",
"tenant_name": "ABC Sirket",
"default_originator": "ABCSIRKET",
"webhook_url": "https:\/\/example.com\/wh"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200, Basarili):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sifre Guncelle
requires authentication
Example request:
curl --request PUT \
"https://api.smsmerkezi.net/v1/panel/settings/password" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"current_password\": \"architecto\",
\"new_password\": \"yenisifre12345\",
\"new_password_confirmation\": \"architecto\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/panel/settings/password"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"current_password": "architecto",
"new_password": "yenisifre12345",
"new_password_confirmation": "architecto"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/settings/password';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'current_password' => 'architecto',
'new_password' => 'yenisifre12345',
'new_password_confirmation' => 'architecto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/settings/password'
payload = {
"current_password": "architecto",
"new_password": "yenisifre12345",
"new_password_confirmation": "architecto"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200, Basarili):
Example response (422, Mevcut sifre hatali):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
KVKK Riza Geri Cek
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/settings/kvkk-revoke" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"reason\": \"architecto\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/panel/settings/kvkk-revoke"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"reason": "architecto"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/settings/kvkk-revoke';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'reason' => 'architecto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/settings/kvkk-revoke'
payload = {
"reason": "architecto"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (202, Basarili):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - Bakiye
Bakiye Ozeti
requires authentication
Mevcut bakiye, rezerve ve kullanilabilir tutar + yasam boyu yukleme/tuketim.
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/balance" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/balance"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/balance';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/balance'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
{
"data": {
"balance": 1500,
"reserved": 50,
"available": 1450,
"last_topup_at": "2026-05-10T12:34:00+00:00"
},
"stats": {
"lifetime_topup": 5000,
"lifetime_consumed": 3500
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Bakiye Hareket Gecmisi
requires authentication
Append-only ledger (topup/send/reserve/release/refund/adjustment/expiry).
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/balance/history?reason=topup&date_from=2026-04-01&date_to=2026-05-11&per_page=50&cursor=eyJpZCI6MTAwfQ" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/balance/history"
);
const params = {
"reason": "topup",
"date_from": "2026-04-01",
"date_to": "2026-05-11",
"per_page": "50",
"cursor": "eyJpZCI6MTAwfQ",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/balance/history';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'reason' => 'topup',
'date_from' => '2026-04-01',
'date_to' => '2026-05-11',
'per_page' => '50',
'cursor' => 'eyJpZCI6MTAwfQ',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/balance/history'
params = {
'reason': 'topup',
'date_from': '2026-04-01',
'date_to': '2026-05-11',
'per_page': '50',
'cursor': 'eyJpZCI6MTAwfQ',
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Basarili):
{
"data": [
{
"id": 1,
"reason": "topup",
"reason_label": "Bakiye Yukleme",
"delta": 1000,
"balance_after": 1500,
"reference_id": null,
"created_at": "2026-05-10T12:34:00+00:00"
}
],
"meta": {
"next_cursor": null,
"prev_cursor": null,
"has_more": false,
"per_page": 30
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - Bakiye Uyarilari
Bakiye Uyari Config
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/balance-alert" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/balance-alert"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/balance-alert';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/balance-alert'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
{
"data": {
"thresholds": [
500,
100
],
"emails": [
"ops@example.com"
],
"last_triggered_threshold": null,
"current_balance": 1500,
"available_balance": 1450,
"webhook_subscribed_balance_low": false
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Bakiye Uyari Guncelle
requires authentication
Example request:
curl --request PUT \
"https://api.smsmerkezi.net/v1/panel/balance-alert" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"thresholds\": [
500,
100
],
\"emails\": [
\"ops@example.com\"
]
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/panel/balance-alert"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"thresholds": [
500,
100
],
"emails": [
"ops@example.com"
]
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/balance-alert';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'thresholds' => [
500,
100,
],
'emails' => [
'ops@example.com',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/balance-alert'
payload = {
"thresholds": [
500,
100
],
"emails": [
"ops@example.com"
]
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200, Basarili):
{
"data": {
"thresholds": [
500,
100
],
"emails": [
"ops@example.com"
]
}
}
Example response (403, viewer/operator):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Test Alarmi Tetikle
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/balance-alert/test" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/balance-alert/test"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/balance-alert/test';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/balance-alert/test'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (202, Basarili):
{
"data": {
"queued": true,
"threshold": 100,
"current_balance": 1500
}
}
Example response (422, Esik tanimsiz):
{
"type": "...",
"title": "Validation Error",
"status": 422
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - Bildirimler
Bildirim Listesi
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/notifications" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/notifications"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/notifications';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/notifications'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Son Bildirimler (Header Zil)
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/notifications/recent" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/notifications/recent"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/notifications/recent';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/notifications/recent'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Tumunu Okundu Isaretle
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/notifications/read-all" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/notifications/read-all"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/notifications/read-all';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/notifications/read-all'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (200, Basarili):
{
"data": {
"marked_count": 5
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Okundu Isaretle
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/notifications/0190b8a4-.../read" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/notifications/0190b8a4-.../read"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/notifications/0190b8a4-.../read';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/notifications/0190b8a4-.../read'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (200, Basarili):
{
"data": {
"id": "...",
"read_at": "..."
}
}
Example response (404, Bulunamadi):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Bildirim Sil
requires authentication
Example request:
curl --request DELETE \
"https://api.smsmerkezi.net/v1/panel/notifications/0190b8a4-..." \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/notifications/0190b8a4-..."
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/notifications/0190b8a4-...';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/notifications/0190b8a4-...'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (204, Basarili):
Empty response
Example response (404, Bulunamadi):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - Kontaklar
Kontak Listesi
requires authentication
Tenant'in kontak rehberini cursor pagination ile listeler.
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/contacts?search=ahmet&tag=vip&status=active&province=Istanbul§or=gida&per_page=50&cursor=eyJpZCI6MTIzfQ" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/contacts"
);
const params = {
"search": "ahmet",
"tag": "vip",
"status": "active",
"province": "Istanbul",
"sector": "gida",
"per_page": "50",
"cursor": "eyJpZCI6MTIzfQ",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/contacts';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'search' => 'ahmet',
'tag' => 'vip',
'status' => 'active',
'province' => 'Istanbul',
'sector' => 'gida',
'per_page' => '50',
'cursor' => 'eyJpZCI6MTIzfQ',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/contacts'
params = {
'search': 'ahmet',
'tag': 'vip',
'status': 'active',
'province': 'Istanbul',
'sector': 'gida',
'per_page': '50',
'cursor': 'eyJpZCI6MTIzfQ',
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Basarili):
{
"data": [
{
"id": 1,
"name": "Ahmet",
"msisdn": "5551234567",
"tags": [
"vip"
],
"opt_out_at": null,
"address_country": "TR",
"address_province": "Istanbul",
"sector": "gida",
"created_at": "2026-05-11T08:00:00+00:00"
}
],
"meta": {
"next_cursor": null,
"prev_cursor": null,
"has_more": false,
"per_page": 30,
"can_see_full_msisdn": true
},
"stats": {
"total": 42,
"active": 40,
"opted_out": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Yeni Kontak Olustur
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/contacts" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Ahmet Yilmaz\",
\"msisdn\": \"05551234567\",
\"tags\": \"vip,musteri\",
\"address_country\": \"TR\",
\"address_province\": \"Istanbul\",
\"address_district\": \"Kadikoy\",
\"landline\": \"02161234567\",
\"sector\": \"gida\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/panel/contacts"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Ahmet Yilmaz",
"msisdn": "05551234567",
"tags": "vip,musteri",
"address_country": "TR",
"address_province": "Istanbul",
"address_district": "Kadikoy",
"landline": "02161234567",
"sector": "gida"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/contacts';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Ahmet Yilmaz',
'msisdn' => '05551234567',
'tags' => 'vip,musteri',
'address_country' => 'TR',
'address_province' => 'Istanbul',
'address_district' => 'Kadikoy',
'landline' => '02161234567',
'sector' => 'gida',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/contacts'
payload = {
"name": "Ahmet Yilmaz",
"msisdn": "05551234567",
"tags": "vip,musteri",
"address_country": "TR",
"address_province": "Istanbul",
"address_district": "Kadikoy",
"landline": "02161234567",
"sector": "gida"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (201, Basarili):
{
"data": {
"id": 1,
"name": "Ahmet",
"msisdn": "5551234567"
}
}
Example response (422, Duplicate msisdn):
{
"type": "https://smsmerkezi.net/errors/validation-error",
"title": "Validation Error",
"status": 422,
"detail": "Bu numara rehberinizde zaten kayitli.",
"instance": "/v1/panel/contacts"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Kontak Detayi
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/contacts/1" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/contacts/1"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/contacts/1';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/contacts/1'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"data": {
"id": 1,
"name": "Ahmet",
"msisdn": "5551234567"
}
}
Example response (404, Bulunamadi):
{
"type": "https://smsmerkezi.net/errors/not-found",
"title": "Not Found",
"status": 404,
"detail": "Kontak bulunamadi.",
"instance": "/v1/panel/contacts/999"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Kontak Guncelle
requires authentication
Example request:
curl --request PUT \
"https://api.smsmerkezi.net/v1/panel/contacts/1" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"b\",
\"msisdn\": \"n\",
\"tags\": \"g\",
\"address_country\": \"zm\",
\"address_province\": \"i\",
\"address_district\": \"y\",
\"landline\": \"vdljnikhwaykcmyu\",
\"sector\": \"w\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/panel/contacts/1"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "b",
"msisdn": "n",
"tags": "g",
"address_country": "zm",
"address_province": "i",
"address_district": "y",
"landline": "vdljnikhwaykcmyu",
"sector": "w"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/contacts/1';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'b',
'msisdn' => 'n',
'tags' => 'g',
'address_country' => 'zm',
'address_province' => 'i',
'address_district' => 'y',
'landline' => 'vdljnikhwaykcmyu',
'sector' => 'w',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/contacts/1'
payload = {
"name": "b",
"msisdn": "n",
"tags": "g",
"address_country": "zm",
"address_province": "i",
"address_district": "y",
"landline": "vdljnikhwaykcmyu",
"sector": "w"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200):
{
"data": {
"id": 1,
"name": "Ahmet Yeni",
"msisdn": "5551234567"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Kontak Sil
requires authentication
Example request:
curl --request DELETE \
"https://api.smsmerkezi.net/v1/panel/contacts/1" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/contacts/1"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/contacts/1';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/contacts/1'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (204, Basarili silindi):
Empty response
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - Kullanicilar
Kullanici + Bekleyen Davet Listesi
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/users" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/users"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/users';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/users'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
Example response (403, Yetki yok):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Kullanici Davet Et
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/users/invite" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"yeni@example.com\",
\"role\": \"operator\"
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/panel/users/invite"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "yeni@example.com",
"role": "operator"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/users/invite';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'email' => 'yeni@example.com',
'role' => 'operator',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/users/invite'
payload = {
"email": "yeni@example.com",
"role": "operator"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (201, Basarili):
Example response (403, Yetki yok):
Example response (422, Email kayitli / pending davet var):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Davet Iptal
requires authentication
Example request:
curl --request DELETE \
"https://api.smsmerkezi.net/v1/panel/users/invitations/564" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/users/invitations/564"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/users/invitations/564';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/users/invitations/564'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (200, Basarili):
Example response (403, Yetki yok):
Example response (404, Davet bulunamadi):
Example response (422, Davet zaten kabul/iptal/expire):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Kullanici Sil
requires authentication
Example request:
curl --request DELETE \
"https://api.smsmerkezi.net/v1/panel/users/564" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/users/564"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/users/564';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/users/564'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (204, Basarili):
Empty response
Example response (403, Yetki yok):
Example response (404, Kullanici bulunamadi):
Example response (422, Kendini silemezsin):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - Raporlar
Rapor Verisi
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/reports?date_from=2026-04-11&date_to=2026-05-11" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/reports"
);
const params = {
"date_from": "2026-04-11",
"date_to": "2026-05-11",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/reports';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'date_from' => '2026-04-11',
'date_to' => '2026-05-11',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/reports'
params = {
'date_from': '2026-04-11',
'date_to': '2026-05-11',
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Basarili):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - SMS
Panel SMS Listesi
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/sms?status=delivered&originator=SMSMERKEZI&date_from=2026-05-01&date_to=2026-05-11&per_page=50&cursor=architecto" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/sms"
);
const params = {
"status": "delivered",
"originator": "SMSMERKEZI",
"date_from": "2026-05-01",
"date_to": "2026-05-11",
"per_page": "50",
"cursor": "architecto",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/sms';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'status' => 'delivered',
'originator' => 'SMSMERKEZI',
'date_from' => '2026-05-01',
'date_to' => '2026-05-11',
'per_page' => '50',
'cursor' => 'architecto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/sms'
params = {
'status': 'delivered',
'originator': 'SMSMERKEZI',
'date_from': '2026-05-01',
'date_to': '2026-05-11',
'per_page': '50',
'cursor': 'architecto',
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Basarili):
{
"data": [
{
"id": 1,
"originator": "SMSMERKEZI",
"body": "Merhaba",
"status": "delivered",
"recipients_count": 2,
"recipients_sample": [
"555****4567"
],
"created_at": "2026-05-11T08:00:00+00:00"
}
],
"meta": {
"next_cursor": null,
"has_more": false,
"per_page": 25,
"can_see_full_msisdn": false
},
"stats": {
"total": 100,
"delivered": 80,
"failed": 5,
"queued": 15,
"sent": 0
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel SMS Detayi (recipients dahil)
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/sms/16" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/sms/16"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/sms/16';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/sms/16'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
{
"data": {
"id": 1,
"originator": "SMSMERKEZI",
"body": "Merhaba",
"status": "delivered",
"recipients": [
{
"id": 1,
"msisdn": "555****4567",
"status": "delivered"
}
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - Sablonlar
Sablon Listesi
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/templates?search=hosgeldin&active=active&per_page=50&cursor=architecto" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/templates"
);
const params = {
"search": "hosgeldin",
"active": "active",
"per_page": "50",
"cursor": "architecto",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/templates';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'search' => 'hosgeldin',
'active' => 'active',
'per_page' => '50',
'cursor' => 'architecto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/templates'
params = {
'search': 'hosgeldin',
'active': 'active',
'per_page': '50',
'cursor': 'architecto',
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Basarili):
{
"data": [
{
"id": 1,
"name": "Hosgeldin",
"body": "Merhaba {{name}}",
"encoding": "gsm7",
"variables": [
"name"
],
"is_active": true
}
],
"meta": {
"next_cursor": null,
"has_more": false,
"per_page": 30
},
"stats": {
"total": 5,
"active": 4,
"inactive": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Yeni Sablon
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/templates" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Hosgeldin\",
\"body\": \"Merhaba {{name}}, hosgeldiniz.\",
\"is_active\": true
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/panel/templates"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Hosgeldin",
"body": "Merhaba {{name}}, hosgeldiniz.",
"is_active": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/templates';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Hosgeldin',
'body' => 'Merhaba {{name}}, hosgeldiniz.',
'is_active' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/templates'
payload = {
"name": "Hosgeldin",
"body": "Merhaba {{name}}, hosgeldiniz.",
"is_active": true
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (201):
{
"data": {
"id": 1,
"name": "Hosgeldin",
"encoding": "gsm7",
"variables": [
"name"
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sablon Detayi
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/templates/16" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/templates/16"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/templates/16';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/templates/16'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"data": {
"id": 1,
"name": "Hosgeldin",
"body": "Merhaba {{name}}"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sablon Guncelle
requires authentication
Example request:
curl --request PUT \
"https://api.smsmerkezi.net/v1/panel/templates/16" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"b\",
\"body\": \"n\",
\"is_active\": true
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/panel/templates/16"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "b",
"body": "n",
"is_active": true
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/templates/16';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'b',
'body' => 'n',
'is_active' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/templates/16'
payload = {
"name": "b",
"body": "n",
"is_active": true
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200):
{
"data": {
"id": 1,
"name": "Hosgeldin Yeni"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sablon Sil
requires authentication
Example request:
curl --request DELETE \
"https://api.smsmerkezi.net/v1/panel/templates/16" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/templates/16"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/templates/16';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/templates/16'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (204, Basarili silindi):
Empty response
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - Sender ID
Sender ID Listesi
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/sender-ids" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/sender-ids"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/sender-ids';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/sender-ids'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sender ID Olustur (multipart)
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/sender-ids" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "label=ABCSIRKET"\
--form "document=@/tmp/php5qNWiK" const url = new URL(
"https://api.smsmerkezi.net/v1/panel/sender-ids"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('label', 'ABCSIRKET');
body.append('document', document.querySelector('input[name="document"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/sender-ids';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'multipart/form-data',
'Accept' => 'application/json',
],
'multipart' => [
[
'name' => 'label',
'contents' => 'ABCSIRKET'
],
[
'name' => 'document',
'contents' => fopen('/tmp/php5qNWiK', 'r')
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/sender-ids'
files = {
'label': (None, 'ABCSIRKET'),
'document': open('/tmp/php5qNWiK', 'rb')}
payload = {
"label": "ABCSIRKET"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, files=files)
response.json()Example response (201, Basarili):
Example response (422, Validation):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sender ID Detay
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/sender-ids/564" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/sender-ids/564"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/sender-ids/564';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/sender-ids/564'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
Example response (404, Bulunamadi):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sender ID Sil (pending/rejected)
requires authentication
Example request:
curl --request DELETE \
"https://api.smsmerkezi.net/v1/panel/sender-ids/564" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/sender-ids/564"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/sender-ids/564';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/sender-ids/564'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (204, Basarili):
Empty response
Example response (404, Bulunamadi):
Example response (422, Approved silinmez):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - Tenant Switcher (super_admin)
Tenant Listesi (super_admin)
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/tenant-switcher?q=abc&cursor=architecto&per_page=20" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/tenant-switcher"
);
const params = {
"q": "abc",
"cursor": "architecto",
"per_page": "20",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/tenant-switcher';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'q' => 'abc',
'cursor' => 'architecto',
'per_page' => '20',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/tenant-switcher'
params = {
'q': 'abc',
'cursor': 'architecto',
'per_page': '20',
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Basarili):
Example response (403, Super admin degil):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Acting-As Durum (super_admin)
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/tenant-switcher/status" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/tenant-switcher/status"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/tenant-switcher/status';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/tenant-switcher/status'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
Example response (403, Super admin degil):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - Toplu SMS
Toplu SMS Kampanya Listesi
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/bulk-sms?status=completed&cursor=architecto&per_page=20" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/bulk-sms"
);
const params = {
"status": "completed",
"cursor": "architecto",
"per_page": "20",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/bulk-sms';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'status' => 'completed',
'cursor' => 'architecto',
'per_page' => '20',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/bulk-sms'
params = {
'status': 'completed',
'cursor': 'architecto',
'per_page': '20',
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200, Basarili):
{
"data": [
{
"id": 1,
"name": "Mayis kampanya",
"status": "completed",
"total_recipients": 150,
"sent_count": 148,
"failed_count": 2,
"progress_percent": 100
}
],
"meta": {
"next_cursor": null,
"has_more": false,
"per_page": 20
},
"statuses": [
"queued",
"processing",
"completed",
"partial",
"cancelled",
"failed"
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Yeni Toplu Kampanya Olustur
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/bulk-sms" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "name=Mayis kampanya"\
--form "body=Bayram indirimi devam ediyor."\
--form "originator=SMSMERKEZI"\
--form "source_type=manual"\
--form "manual_recipients=5551234567,Ahmet"\
--form "file=@/tmp/phprKHrKG" const url = new URL(
"https://api.smsmerkezi.net/v1/panel/bulk-sms"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('name', 'Mayis kampanya');
body.append('body', 'Bayram indirimi devam ediyor.');
body.append('originator', 'SMSMERKEZI');
body.append('source_type', 'manual');
body.append('manual_recipients', '5551234567,Ahmet');
body.append('file', document.querySelector('input[name="file"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/bulk-sms';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'multipart/form-data',
'Accept' => 'application/json',
],
'multipart' => [
[
'name' => 'name',
'contents' => 'Mayis kampanya'
],
[
'name' => 'body',
'contents' => 'Bayram indirimi devam ediyor.'
],
[
'name' => 'originator',
'contents' => 'SMSMERKEZI'
],
[
'name' => 'source_type',
'contents' => 'manual'
],
[
'name' => 'manual_recipients',
'contents' => '5551234567,Ahmet'
],
[
'name' => 'file',
'contents' => fopen('/tmp/phprKHrKG', 'r')
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/bulk-sms'
files = {
'name': (None, 'Mayis kampanya'),
'body': (None, 'Bayram indirimi devam ediyor.'),
'originator': (None, 'SMSMERKEZI'),
'source_type': (None, 'manual'),
'manual_recipients': (None, '5551234567,Ahmet'),
'file': open('/tmp/phprKHrKG', 'rb')}
payload = {
"name": "Mayis kampanya",
"body": "Bayram indirimi devam ediyor.",
"originator": "SMSMERKEZI",
"source_type": "manual",
"manual_recipients": "5551234567,Ahmet"
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, files=files)
response.json()Example response (201, Basarili):
{
"data": {
"id": 42,
"status": "queued",
"total_recipients": 150,
"parts_count": 1
}
}
Example response (422, Validation):
{
"type": "https://smsmerkezi.net/errors/validation-error",
"title": "Validation Error",
"status": 422,
"detail": "Dosya bos veya parse edilemedi.",
"instance": "/v1/panel/bulk-sms"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Kampanya Detayi
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/bulk-sms/3" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/bulk-sms/3"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/bulk-sms/3';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/bulk-sms/3'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Kampanya Progress (Polling)
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/bulk-sms/3/progress" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/bulk-sms/3/progress"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/bulk-sms/3/progress';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/bulk-sms/3/progress'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"status": "processing",
"sent_count": 80,
"failed_count": 2,
"total_recipients": 150,
"progress_percent": 54.66,
"is_active": true,
"is_final": false
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Kampanyayi Iptal Et
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/bulk-sms/3/cancel" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/bulk-sms/3/cancel"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/bulk-sms/3/cancel';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/bulk-sms/3/cancel'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (200):
{
"data": {
"id": 42,
"status": "processing",
"cancelled_at": "2026-05-11T08:00:00+00:00"
}
}
Example response (409, Zaten kapali):
{
"type": "https://smsmerkezi.net/errors/conflict",
"title": "Conflict",
"status": 409,
"detail": "Kampanya zaten tamamlandi veya durduruldu.",
"instance": "/v1/panel/bulk-sms/42/cancel"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Panel - Webhook
Webhook Config
requires authentication
Example request:
curl --request GET \
--get "https://api.smsmerkezi.net/v1/panel/webhooks" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/webhooks"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/webhooks';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/webhooks'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200, Basarili):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Webhook Guncelle
requires authentication
Example request:
curl --request PUT \
"https://api.smsmerkezi.net/v1/panel/webhooks" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"url\": \"http:\\/\\/www.bailey.biz\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\",
\"events\": [
\"architecto\"
],
\"retry_policy\": \"architecto\",
\"active\": false
}"
const url = new URL(
"https://api.smsmerkezi.net/v1/panel/webhooks"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"url": "http:\/\/www.bailey.biz\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html",
"events": [
"architecto"
],
"retry_policy": "architecto",
"active": false
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/webhooks';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'url' => 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html',
'events' => [
'architecto',
],
'retry_policy' => 'architecto',
'active' => false,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/webhooks'
payload = {
"url": "http:\/\/www.bailey.biz\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html",
"events": [
"architecto"
],
"retry_policy": "architecto",
"active": false
}
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200, Basarili):
Example response (403, viewer/operator):
Example response (422, Validation):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Secret Yenile (Bir kez plain doner)
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/webhooks/secret/regenerate" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/webhooks/secret/regenerate"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/webhooks/secret/regenerate';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/webhooks/secret/regenerate'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (200, Basarili):
{
"data": {
"plain_secret": "wsk_...",
"has_secret": true
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Test Ping
requires authentication
Example request:
curl --request POST \
"https://api.smsmerkezi.net/v1/panel/webhooks/test" \
--header "Authorization: Bearer {API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.smsmerkezi.net/v1/panel/webhooks/test"
);
const headers = {
"Authorization": "Bearer {API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.smsmerkezi.net/v1/panel/webhooks/test';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.smsmerkezi.net/v1/panel/webhooks/test'
headers = {
'Authorization': 'Bearer {API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (200, Basarili):
Example response (422, Webhook hazir degil):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.