Kampanyalar
Kampanyalar — 18 işlem (GET /v1/apps/{appId}/campaigns, POST /v1/apps/{appId}/campaigns, GET /v1/apps/{appId}/campaigns/{campaignId}, …). OpenAPI 3.1.0 sözleşmesinden üretilir.
Kampanya yaşam döngüsü: oluşturma, zamanlama, gönderme, duraklatma/sürdürme, iptal, onay, A/B varyant istatistikleri ve kazanan seçimi.
Taban adres: https://api.pushizo.com · Etiket: campaigns · Etkileşimli belge (Scalar)
İşlemler
| Yöntem | Yol | İşlem |
|---|---|---|
GET | /v1/apps/{appId}/campaigns | Kampanya listesi |
POST | /v1/apps/{appId}/campaigns | Kampanya oluştur |
GET | /v1/apps/{appId}/campaigns/{campaignId} | Kampanya detayı |
PATCH | /v1/apps/{appId}/campaigns/{campaignId} | Kampanya güncelle |
DELETE | /v1/apps/{appId}/campaigns/{campaignId} | Kampanya sil |
POST | /v1/apps/{appId}/campaigns/{campaignId}/schedule | Zamanla |
POST | /v1/apps/{appId}/campaigns/{campaignId}/send | Hemen gönder |
POST | /v1/apps/{appId}/campaigns/{campaignId}/pause | Duraklat |
POST | /v1/apps/{appId}/campaigns/{campaignId}/resume | Sürdür |
POST | /v1/apps/{appId}/campaigns/{campaignId}/cancel | İptal |
POST | /v1/apps/{appId}/campaigns/{campaignId}/duplicate | Çoğalt |
POST | /v1/apps/{appId}/campaigns/{campaignId}/approve | Onayla |
GET | /v1/apps/{appId}/campaigns/{campaignId}/stats | İstatistikler |
GET | /v1/apps/{appId}/campaigns/{campaignId}/variants/stats | A/B varyant karşılaştırması |
POST | /v1/apps/{appId}/campaigns/{campaignId}/winner | A/B kazananını seç |
GET | /v1/apps/{appId}/campaigns/{campaignId}/deliveries | Abone bazlı teslimatlar |
POST | /v1/apps/{appId}/campaigns/{campaignId}/resend-failed | Başarısız teslimatlara yeniden gönder |
GET | /v1/apps/{appId}/campaigns/{campaignId}/messages | Kampanya çalıştırmaları |
Ayrıntılar
Kampanya listesi
Kimlik doğrulama: API anahtarı — kapsam analytics:read (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
limit | sorgu | integer | Hayır | Varsayılan: 50; Aralık: 1–200 | 50 |
cursor | sorgu | string | Hayır | Uzunluk: 1–∞ | "eyJpZCI6Im1zZ18wMUpE…" |
q | sorgu | string | Hayır | Uzunluk: 1–100 | "ayse" |
status | sorgu | enum | Hayır | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" | "draft" |
type | sorgu | enum | Hayır | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" | "one_time" |
channel | sorgu | enum | Hayır | Değerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs" | "ios_push" |
label | sorgu | string | Hayır | Uzunluk: 1–40 | "external_id" |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: CampaignPage
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
data | array<object> | Evet | |
data[].id | string | Evet | |
data[].app_id | string | Evet | |
data[].name | string | Evet | |
data[].labels | array<string> | Evet | |
data[].category | string | null | Evet | |
data[].ab_test | object | Evet | |
data[].ab_test.enabled | boolean | Hayır | |
data[].ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
data[].ab_test.winner | object | Hayır | |
data[].ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
data[].ab_test.winner_variant_id | string | Hayır | |
data[].ab_test.decided_at | string | Hayır | |
data[].ab_test.decided_by | string | Hayır | |
data[].ab_test.significance | object | Hayır | |
data[].variants | array<object> | Evet | |
data[].variants[].id | string | Evet | |
data[].variants[].name | string | Evet | |
data[].variants[].weight_percent | integer | Evet | |
data[].variants[].content | map<string, any> | null | Evet | |
data[].variants[].is_control | boolean | Evet | |
data[].variants[].position | integer | Evet | |
data[].type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
data[].status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
data[].audience | map<string, any> | Evet | |
data[].content | map<string, any> | Evet | |
data[].template_id | string | null | Evet | |
data[].template_version | integer | null | Evet | |
data[].delivery | object | Evet | |
data[].delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
data[].delivery.delivery_time_of_day | string | Hayır | |
data[].delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
data[].delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
data[].delivery.priority | 5 | 10 | Hayır | |
data[].delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
data[].delivery.frequency_cap_exempt | boolean | Hayır | |
data[].delivery.quiet_hours_exempt | boolean | Hayır | |
data[].delivery.one_per_user | boolean | Hayır | |
data[].recurrence | object | null | Evet | |
data[].approval | object | Evet | |
data[].approval.required | boolean | Evet | |
data[].approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
data[].approval.requested_by | string | Hayır | |
data[].approval.requested_at | string | Hayır | |
data[].approval.approved_by | string | Hayır | |
data[].approval.approved_at | string | Hayır | |
data[].approval.rejected_by | string | Hayır | |
data[].approval.rejected_at | string | Hayır | |
data[].stats | object | Evet | |
data[].stats.runs | integer | Hayır | |
data[].stats.targeted | integer | Hayır | |
data[].stats.suppressed | integer | Hayır | |
data[].stats.sent | integer | Hayır | |
data[].stats.delivered | integer | Hayır | |
data[].stats.failed | integer | Hayır | |
data[].stats.opened | integer | Hayır | |
data[].stats.clicked | integer | Hayır | |
data[].stats.converted | integer | Hayır | |
data[].stats.bounced | integer | Hayır | |
data[].stats.complained | integer | Hayır | |
data[].stats.unsubscribed | integer | Hayır | |
data[].stats.sms_segments | integer | Hayır | |
data[].send_at | string | null | Evet | |
data[].next_run_at | string | null | Evet | |
data[].last_run_at | string | null | Evet | |
data[].run_count | integer | Evet | |
data[].error | string | null | Evet | |
data[].created_by | string | null | Evet | |
data[].started_at | string | null | Evet | |
data[].completed_at | string | null | Evet | |
data[].created_at | string | Evet | |
data[].updated_at | string | Evet | |
data[].estimated_recipients | integer | null | Evet | |
next_cursor | string | null | Evet | |
has_more | boolean | Evet |
Örnek yanıt:
{
"data": [
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate"
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}
],
"next_cursor": "eyJpZCI6Im1zZ18wMUpE…",
"has_more": true
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns?limit=50" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Kampanya oluştur
Kimlik doğrulama: API anahtarı — kapsam notifications:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
İstek gövdesi (zorunlu)
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | Hayır | Uzunluk: 2–120 |
type | enum | Hayır | Değerler: "one_time", "scheduled", "recurring" |
audience | object | Hayır | |
audience.all | boolean | Hayır | |
audience.segments | array<string> | Hayır | |
audience.exclude_segments | array<string> | Hayır | |
audience.filters | object | Hayır | Filtre AST: all/any/none grupları ve { field, op, value } koşulları (docs/plan/05 §5.7). |
audience.filters.all | array<object> | Hayır | |
audience.filters.any | array<object> | Hayır | |
audience.filters.none | array<object> | Hayır | |
audience.channels | array<enum> | Hayır | |
audience.test_devices_only | boolean | Hayır | |
content | object | Hayır | messages.content ile aynı şema (headings, contents, url, buttons…) |
labels | array<string> | Hayır | Öğe: 0–10 |
category | string | null | Hayır | Tercih kategorisi anahtarı; kapalı kullanıcılar bastırılır |
ab_test | object | Hayır | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Hayır | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Hayır | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–∞ |
variants | array<object> | Hayır | A/B varyantları (ağırlıklar toplamı 100; en fazla bir is_control). Öğe: 0–10 |
variants[].id | string | Hayır | |
variants[].name | string | Evet | Uzunluk: 0–60 |
variants[].weight_percent | integer | Evet | Aralık: 1–99 |
variants[].content | object | null | Hayır | |
variants[].is_control | boolean | Hayır | |
template_id | string | Hayır | |
template_version | integer | Hayır | |
delivery | object | Hayır | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | |
delivery.ttl | integer | Hayır | |
delivery.priority | enum | Hayır | Değerler: 5, 10 |
delivery.collapse_id | string | Hayır | |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Hayır | |
recurrence.cron | string | Hayır | |
recurrence.until | string (date-time) | null | Hayır | |
recurrence.timezone | string | Hayır | |
send_at | string (date-time) | null | Hayır |
Örnek:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"audience": {
"channels": [
"ios_push"
],
"all": false,
"segments": [
"örnek"
]
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"labels": [
"promo"
]
}Yanıtlar
200 — Başarılı.
Şema: Campaign
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
labels | array<string> | Evet | |
category | string | null | Evet | |
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].content | map<string, any> | null | Evet | |
variants[].is_control | boolean | Evet | |
variants[].position | integer | Evet | |
type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
audience | map<string, any> | Evet | |
content | map<string, any> | Evet | |
template_id | string | null | Evet | |
template_version | integer | null | Evet | |
delivery | object | Evet | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
delivery.priority | 5 | 10 | Hayır | |
delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Evet | |
approval | object | Evet | |
approval.required | boolean | Evet | |
approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
approval.requested_by | string | Hayır | |
approval.requested_at | string | Hayır | |
approval.approved_by | string | Hayır | |
approval.approved_at | string | Hayır | |
approval.rejected_by | string | Hayır | |
approval.rejected_at | string | Hayır | |
stats | object | Evet | |
stats.runs | integer | Hayır | |
stats.targeted | integer | Hayır | |
stats.suppressed | integer | Hayır | |
stats.sent | integer | Hayır | |
stats.delivered | integer | Hayır | |
stats.failed | integer | Hayır | |
stats.opened | integer | Hayır | |
stats.clicked | integer | Hayır | |
stats.converted | integer | Hayır | |
stats.bounced | integer | Hayır | |
stats.complained | integer | Hayır | |
stats.unsubscribed | integer | Hayır | |
stats.sms_segments | integer | Hayır | |
send_at | string | null | Evet | |
next_run_at | string | null | Evet | |
last_run_at | string | null | Evet | |
run_count | integer | Evet | |
error | string | null | Evet | |
created_by | string | null | Evet | |
started_at | string | null | Evet | |
completed_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet | |
estimated_recipients | integer | null | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate",
"delivery_time_of_day": "değer",
"throttle_per_minute": 1
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek",
"requested_at": "örnek",
"approved_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1,
"suppressed": 1,
"sent": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns" \
-H "Authorization: Bearer $PUSHIZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Sipariş bildirimleri",
"type": "one_time",
"audience": {
"channels": [
"ios_push"
],
"all": false,
"segments": [
"örnek"
]
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"labels": [
"promo"
]
}'Kampanya detayı
Kimlik doğrulama: API anahtarı — kapsam analytics:read (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: Campaign
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
labels | array<string> | Evet | |
category | string | null | Evet | |
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].content | map<string, any> | null | Evet | |
variants[].is_control | boolean | Evet | |
variants[].position | integer | Evet | |
type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
audience | map<string, any> | Evet | |
content | map<string, any> | Evet | |
template_id | string | null | Evet | |
template_version | integer | null | Evet | |
delivery | object | Evet | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
delivery.priority | 5 | 10 | Hayır | |
delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Evet | |
approval | object | Evet | |
approval.required | boolean | Evet | |
approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
approval.requested_by | string | Hayır | |
approval.requested_at | string | Hayır | |
approval.approved_by | string | Hayır | |
approval.approved_at | string | Hayır | |
approval.rejected_by | string | Hayır | |
approval.rejected_at | string | Hayır | |
stats | object | Evet | |
stats.runs | integer | Hayır | |
stats.targeted | integer | Hayır | |
stats.suppressed | integer | Hayır | |
stats.sent | integer | Hayır | |
stats.delivered | integer | Hayır | |
stats.failed | integer | Hayır | |
stats.opened | integer | Hayır | |
stats.clicked | integer | Hayır | |
stats.converted | integer | Hayır | |
stats.bounced | integer | Hayır | |
stats.complained | integer | Hayır | |
stats.unsubscribed | integer | Hayır | |
stats.sms_segments | integer | Hayır | |
send_at | string | null | Evet | |
next_run_at | string | null | Evet | |
last_run_at | string | null | Evet | |
run_count | integer | Evet | |
error | string | null | Evet | |
created_by | string | null | Evet | |
started_at | string | null | Evet | |
completed_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet | |
estimated_recipients | integer | null | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate",
"delivery_time_of_day": "değer",
"throttle_per_minute": 1
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek",
"requested_at": "örnek",
"approved_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1,
"suppressed": 1,
"sent": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Kampanya güncelle
Kimlik doğrulama: API anahtarı — kapsam notifications:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
İstek gövdesi (zorunlu)
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | Hayır | Uzunluk: 2–120 |
type | enum | Hayır | Değerler: "one_time", "scheduled", "recurring" |
audience | object | Hayır | |
audience.all | boolean | Hayır | |
audience.segments | array<string> | Hayır | |
audience.exclude_segments | array<string> | Hayır | |
audience.filters | object | Hayır | Filtre AST: all/any/none grupları ve { field, op, value } koşulları (docs/plan/05 §5.7). |
audience.filters.all | array<object> | Hayır | |
audience.filters.any | array<object> | Hayır | |
audience.filters.none | array<object> | Hayır | |
audience.channels | array<enum> | Hayır | |
audience.test_devices_only | boolean | Hayır | |
content | object | Hayır | messages.content ile aynı şema (headings, contents, url, buttons…) |
labels | array<string> | Hayır | Öğe: 0–10 |
category | string | null | Hayır | Tercih kategorisi anahtarı; kapalı kullanıcılar bastırılır |
ab_test | object | Hayır | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Hayır | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Hayır | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–∞ |
variants | array<object> | Hayır | A/B varyantları (ağırlıklar toplamı 100; en fazla bir is_control). Öğe: 0–10 |
variants[].id | string | Hayır | |
variants[].name | string | Evet | Uzunluk: 0–60 |
variants[].weight_percent | integer | Evet | Aralık: 1–99 |
variants[].content | object | null | Hayır | |
variants[].is_control | boolean | Hayır | |
template_id | string | Hayır | |
template_version | integer | Hayır | |
delivery | object | Hayır | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | |
delivery.ttl | integer | Hayır | |
delivery.priority | enum | Hayır | Değerler: 5, 10 |
delivery.collapse_id | string | Hayır | |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Hayır | |
recurrence.cron | string | Hayır | |
recurrence.until | string (date-time) | null | Hayır | |
recurrence.timezone | string | Hayır | |
send_at | string (date-time) | null | Hayır |
Örnek:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"audience": {
"channels": [
"ios_push"
],
"all": false,
"segments": [
"örnek"
]
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"labels": [
"promo"
]
}Yanıtlar
200 — Başarılı.
Şema: Campaign
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
labels | array<string> | Evet | |
category | string | null | Evet | |
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].content | map<string, any> | null | Evet | |
variants[].is_control | boolean | Evet | |
variants[].position | integer | Evet | |
type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
audience | map<string, any> | Evet | |
content | map<string, any> | Evet | |
template_id | string | null | Evet | |
template_version | integer | null | Evet | |
delivery | object | Evet | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
delivery.priority | 5 | 10 | Hayır | |
delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Evet | |
approval | object | Evet | |
approval.required | boolean | Evet | |
approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
approval.requested_by | string | Hayır | |
approval.requested_at | string | Hayır | |
approval.approved_by | string | Hayır | |
approval.approved_at | string | Hayır | |
approval.rejected_by | string | Hayır | |
approval.rejected_at | string | Hayır | |
stats | object | Evet | |
stats.runs | integer | Hayır | |
stats.targeted | integer | Hayır | |
stats.suppressed | integer | Hayır | |
stats.sent | integer | Hayır | |
stats.delivered | integer | Hayır | |
stats.failed | integer | Hayır | |
stats.opened | integer | Hayır | |
stats.clicked | integer | Hayır | |
stats.converted | integer | Hayır | |
stats.bounced | integer | Hayır | |
stats.complained | integer | Hayır | |
stats.unsubscribed | integer | Hayır | |
stats.sms_segments | integer | Hayır | |
send_at | string | null | Evet | |
next_run_at | string | null | Evet | |
last_run_at | string | null | Evet | |
run_count | integer | Evet | |
error | string | null | Evet | |
created_by | string | null | Evet | |
started_at | string | null | Evet | |
completed_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet | |
estimated_recipients | integer | null | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate",
"delivery_time_of_day": "değer",
"throttle_per_minute": 1
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek",
"requested_at": "örnek",
"approved_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1,
"suppressed": 1,
"sent": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X PATCH "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" \
-H "Authorization: Bearer $PUSHIZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Sipariş bildirimleri",
"type": "one_time",
"audience": {
"channels": [
"ios_push"
],
"all": false,
"segments": [
"örnek"
]
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"labels": [
"promo"
]
}'Kampanya sil
Kimlik doğrulama: API anahtarı — kapsam notifications:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: Ok
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
ok | true | Evet |
Örnek yanıt:
{
"ok": true
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X DELETE "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Zamanla
Kimlik doğrulama: API anahtarı — kapsam notifications:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
İstek gövdesi (zorunlu)
Şema: ScheduleCampaignDto
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
send_at | string (date-time) | Hayır | |
recurrence | object | Hayır | |
recurrence.cron | string | Evet | Uzunluk: 9–100 |
recurrence.until | string (date-time) | null | Hayır | |
recurrence.timezone | string | Hayır | Uzunluk: 1–64 |
Örnek:
{
"send_at": "2026-10-17T09:00:00Z",
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
}
}Yanıtlar
200 — Başarılı.
Şema: Campaign
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
labels | array<string> | Evet | |
category | string | null | Evet | |
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].content | map<string, any> | null | Evet | |
variants[].is_control | boolean | Evet | |
variants[].position | integer | Evet | |
type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
audience | map<string, any> | Evet | |
content | map<string, any> | Evet | |
template_id | string | null | Evet | |
template_version | integer | null | Evet | |
delivery | object | Evet | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
delivery.priority | 5 | 10 | Hayır | |
delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Evet | |
approval | object | Evet | |
approval.required | boolean | Evet | |
approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
approval.requested_by | string | Hayır | |
approval.requested_at | string | Hayır | |
approval.approved_by | string | Hayır | |
approval.approved_at | string | Hayır | |
approval.rejected_by | string | Hayır | |
approval.rejected_at | string | Hayır | |
stats | object | Evet | |
stats.runs | integer | Hayır | |
stats.targeted | integer | Hayır | |
stats.suppressed | integer | Hayır | |
stats.sent | integer | Hayır | |
stats.delivered | integer | Hayır | |
stats.failed | integer | Hayır | |
stats.opened | integer | Hayır | |
stats.clicked | integer | Hayır | |
stats.converted | integer | Hayır | |
stats.bounced | integer | Hayır | |
stats.complained | integer | Hayır | |
stats.unsubscribed | integer | Hayır | |
stats.sms_segments | integer | Hayır | |
send_at | string | null | Evet | |
next_run_at | string | null | Evet | |
last_run_at | string | null | Evet | |
run_count | integer | Evet | |
error | string | null | Evet | |
created_by | string | null | Evet | |
started_at | string | null | Evet | |
completed_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet | |
estimated_recipients | integer | null | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate",
"delivery_time_of_day": "değer",
"throttle_per_minute": 1
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek",
"requested_at": "örnek",
"approved_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1,
"suppressed": 1,
"sent": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W/schedule" \
-H "Authorization: Bearer $PUSHIZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"send_at": "2026-10-17T09:00:00Z",
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
}
}'Hemen gönder
Kimlik doğrulama: API anahtarı — kapsam notifications:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: Campaign
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
labels | array<string> | Evet | |
category | string | null | Evet | |
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].content | map<string, any> | null | Evet | |
variants[].is_control | boolean | Evet | |
variants[].position | integer | Evet | |
type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
audience | map<string, any> | Evet | |
content | map<string, any> | Evet | |
template_id | string | null | Evet | |
template_version | integer | null | Evet | |
delivery | object | Evet | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
delivery.priority | 5 | 10 | Hayır | |
delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Evet | |
approval | object | Evet | |
approval.required | boolean | Evet | |
approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
approval.requested_by | string | Hayır | |
approval.requested_at | string | Hayır | |
approval.approved_by | string | Hayır | |
approval.approved_at | string | Hayır | |
approval.rejected_by | string | Hayır | |
approval.rejected_at | string | Hayır | |
stats | object | Evet | |
stats.runs | integer | Hayır | |
stats.targeted | integer | Hayır | |
stats.suppressed | integer | Hayır | |
stats.sent | integer | Hayır | |
stats.delivered | integer | Hayır | |
stats.failed | integer | Hayır | |
stats.opened | integer | Hayır | |
stats.clicked | integer | Hayır | |
stats.converted | integer | Hayır | |
stats.bounced | integer | Hayır | |
stats.complained | integer | Hayır | |
stats.unsubscribed | integer | Hayır | |
stats.sms_segments | integer | Hayır | |
send_at | string | null | Evet | |
next_run_at | string | null | Evet | |
last_run_at | string | null | Evet | |
run_count | integer | Evet | |
error | string | null | Evet | |
created_by | string | null | Evet | |
started_at | string | null | Evet | |
completed_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet | |
estimated_recipients | integer | null | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate",
"delivery_time_of_day": "değer",
"throttle_per_minute": 1
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek",
"requested_at": "örnek",
"approved_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1,
"suppressed": 1,
"sent": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W/send" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Duraklat
Kimlik doğrulama: API anahtarı — kapsam notifications:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: Campaign
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
labels | array<string> | Evet | |
category | string | null | Evet | |
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].content | map<string, any> | null | Evet | |
variants[].is_control | boolean | Evet | |
variants[].position | integer | Evet | |
type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
audience | map<string, any> | Evet | |
content | map<string, any> | Evet | |
template_id | string | null | Evet | |
template_version | integer | null | Evet | |
delivery | object | Evet | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
delivery.priority | 5 | 10 | Hayır | |
delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Evet | |
approval | object | Evet | |
approval.required | boolean | Evet | |
approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
approval.requested_by | string | Hayır | |
approval.requested_at | string | Hayır | |
approval.approved_by | string | Hayır | |
approval.approved_at | string | Hayır | |
approval.rejected_by | string | Hayır | |
approval.rejected_at | string | Hayır | |
stats | object | Evet | |
stats.runs | integer | Hayır | |
stats.targeted | integer | Hayır | |
stats.suppressed | integer | Hayır | |
stats.sent | integer | Hayır | |
stats.delivered | integer | Hayır | |
stats.failed | integer | Hayır | |
stats.opened | integer | Hayır | |
stats.clicked | integer | Hayır | |
stats.converted | integer | Hayır | |
stats.bounced | integer | Hayır | |
stats.complained | integer | Hayır | |
stats.unsubscribed | integer | Hayır | |
stats.sms_segments | integer | Hayır | |
send_at | string | null | Evet | |
next_run_at | string | null | Evet | |
last_run_at | string | null | Evet | |
run_count | integer | Evet | |
error | string | null | Evet | |
created_by | string | null | Evet | |
started_at | string | null | Evet | |
completed_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet | |
estimated_recipients | integer | null | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate",
"delivery_time_of_day": "değer",
"throttle_per_minute": 1
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek",
"requested_at": "örnek",
"approved_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1,
"suppressed": 1,
"sent": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W/pause" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Sürdür
Kimlik doğrulama: API anahtarı — kapsam notifications:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: Campaign
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
labels | array<string> | Evet | |
category | string | null | Evet | |
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].content | map<string, any> | null | Evet | |
variants[].is_control | boolean | Evet | |
variants[].position | integer | Evet | |
type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
audience | map<string, any> | Evet | |
content | map<string, any> | Evet | |
template_id | string | null | Evet | |
template_version | integer | null | Evet | |
delivery | object | Evet | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
delivery.priority | 5 | 10 | Hayır | |
delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Evet | |
approval | object | Evet | |
approval.required | boolean | Evet | |
approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
approval.requested_by | string | Hayır | |
approval.requested_at | string | Hayır | |
approval.approved_by | string | Hayır | |
approval.approved_at | string | Hayır | |
approval.rejected_by | string | Hayır | |
approval.rejected_at | string | Hayır | |
stats | object | Evet | |
stats.runs | integer | Hayır | |
stats.targeted | integer | Hayır | |
stats.suppressed | integer | Hayır | |
stats.sent | integer | Hayır | |
stats.delivered | integer | Hayır | |
stats.failed | integer | Hayır | |
stats.opened | integer | Hayır | |
stats.clicked | integer | Hayır | |
stats.converted | integer | Hayır | |
stats.bounced | integer | Hayır | |
stats.complained | integer | Hayır | |
stats.unsubscribed | integer | Hayır | |
stats.sms_segments | integer | Hayır | |
send_at | string | null | Evet | |
next_run_at | string | null | Evet | |
last_run_at | string | null | Evet | |
run_count | integer | Evet | |
error | string | null | Evet | |
created_by | string | null | Evet | |
started_at | string | null | Evet | |
completed_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet | |
estimated_recipients | integer | null | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate",
"delivery_time_of_day": "değer",
"throttle_per_minute": 1
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek",
"requested_at": "örnek",
"approved_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1,
"suppressed": 1,
"sent": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W/resume" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"İptal
Kimlik doğrulama: API anahtarı — kapsam notifications:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: Campaign
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
labels | array<string> | Evet | |
category | string | null | Evet | |
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].content | map<string, any> | null | Evet | |
variants[].is_control | boolean | Evet | |
variants[].position | integer | Evet | |
type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
audience | map<string, any> | Evet | |
content | map<string, any> | Evet | |
template_id | string | null | Evet | |
template_version | integer | null | Evet | |
delivery | object | Evet | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
delivery.priority | 5 | 10 | Hayır | |
delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Evet | |
approval | object | Evet | |
approval.required | boolean | Evet | |
approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
approval.requested_by | string | Hayır | |
approval.requested_at | string | Hayır | |
approval.approved_by | string | Hayır | |
approval.approved_at | string | Hayır | |
approval.rejected_by | string | Hayır | |
approval.rejected_at | string | Hayır | |
stats | object | Evet | |
stats.runs | integer | Hayır | |
stats.targeted | integer | Hayır | |
stats.suppressed | integer | Hayır | |
stats.sent | integer | Hayır | |
stats.delivered | integer | Hayır | |
stats.failed | integer | Hayır | |
stats.opened | integer | Hayır | |
stats.clicked | integer | Hayır | |
stats.converted | integer | Hayır | |
stats.bounced | integer | Hayır | |
stats.complained | integer | Hayır | |
stats.unsubscribed | integer | Hayır | |
stats.sms_segments | integer | Hayır | |
send_at | string | null | Evet | |
next_run_at | string | null | Evet | |
last_run_at | string | null | Evet | |
run_count | integer | Evet | |
error | string | null | Evet | |
created_by | string | null | Evet | |
started_at | string | null | Evet | |
completed_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet | |
estimated_recipients | integer | null | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate",
"delivery_time_of_day": "değer",
"throttle_per_minute": 1
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek",
"requested_at": "örnek",
"approved_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1,
"suppressed": 1,
"sent": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W/cancel" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Çoğalt
Kimlik doğrulama: API anahtarı — kapsam notifications:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: Campaign
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
labels | array<string> | Evet | |
category | string | null | Evet | |
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].content | map<string, any> | null | Evet | |
variants[].is_control | boolean | Evet | |
variants[].position | integer | Evet | |
type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
audience | map<string, any> | Evet | |
content | map<string, any> | Evet | |
template_id | string | null | Evet | |
template_version | integer | null | Evet | |
delivery | object | Evet | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
delivery.priority | 5 | 10 | Hayır | |
delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Evet | |
approval | object | Evet | |
approval.required | boolean | Evet | |
approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
approval.requested_by | string | Hayır | |
approval.requested_at | string | Hayır | |
approval.approved_by | string | Hayır | |
approval.approved_at | string | Hayır | |
approval.rejected_by | string | Hayır | |
approval.rejected_at | string | Hayır | |
stats | object | Evet | |
stats.runs | integer | Hayır | |
stats.targeted | integer | Hayır | |
stats.suppressed | integer | Hayır | |
stats.sent | integer | Hayır | |
stats.delivered | integer | Hayır | |
stats.failed | integer | Hayır | |
stats.opened | integer | Hayır | |
stats.clicked | integer | Hayır | |
stats.converted | integer | Hayır | |
stats.bounced | integer | Hayır | |
stats.complained | integer | Hayır | |
stats.unsubscribed | integer | Hayır | |
stats.sms_segments | integer | Hayır | |
send_at | string | null | Evet | |
next_run_at | string | null | Evet | |
last_run_at | string | null | Evet | |
run_count | integer | Evet | |
error | string | null | Evet | |
created_by | string | null | Evet | |
started_at | string | null | Evet | |
completed_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet | |
estimated_recipients | integer | null | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate",
"delivery_time_of_day": "değer",
"throttle_per_minute": 1
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek",
"requested_at": "örnek",
"approved_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1,
"suppressed": 1,
"sent": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W/duplicate" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Onayla
Kimlik doğrulama: API anahtarı — kapsam admin (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: Campaign
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
labels | array<string> | Evet | |
category | string | null | Evet | |
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].content | map<string, any> | null | Evet | |
variants[].is_control | boolean | Evet | |
variants[].position | integer | Evet | |
type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
audience | map<string, any> | Evet | |
content | map<string, any> | Evet | |
template_id | string | null | Evet | |
template_version | integer | null | Evet | |
delivery | object | Evet | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
delivery.priority | 5 | 10 | Hayır | |
delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Evet | |
approval | object | Evet | |
approval.required | boolean | Evet | |
approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
approval.requested_by | string | Hayır | |
approval.requested_at | string | Hayır | |
approval.approved_by | string | Hayır | |
approval.approved_at | string | Hayır | |
approval.rejected_by | string | Hayır | |
approval.rejected_at | string | Hayır | |
stats | object | Evet | |
stats.runs | integer | Hayır | |
stats.targeted | integer | Hayır | |
stats.suppressed | integer | Hayır | |
stats.sent | integer | Hayır | |
stats.delivered | integer | Hayır | |
stats.failed | integer | Hayır | |
stats.opened | integer | Hayır | |
stats.clicked | integer | Hayır | |
stats.converted | integer | Hayır | |
stats.bounced | integer | Hayır | |
stats.complained | integer | Hayır | |
stats.unsubscribed | integer | Hayır | |
stats.sms_segments | integer | Hayır | |
send_at | string | null | Evet | |
next_run_at | string | null | Evet | |
last_run_at | string | null | Evet | |
run_count | integer | Evet | |
error | string | null | Evet | |
created_by | string | null | Evet | |
started_at | string | null | Evet | |
completed_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet | |
estimated_recipients | integer | null | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate",
"delivery_time_of_day": "değer",
"throttle_per_minute": 1
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek",
"requested_at": "örnek",
"approved_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1,
"suppressed": 1,
"sent": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W/approve" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"İstatistikler
Kimlik doğrulama: API anahtarı — kapsam analytics:read (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: CampaignStats
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
campaign | object | Evet | |
campaign.id | string | Evet | |
campaign.app_id | string | Evet | |
campaign.name | string | Evet | |
campaign.labels | array<string> | Evet | |
campaign.category | string | null | Evet | |
campaign.ab_test | object | Evet | |
campaign.ab_test.enabled | boolean | Hayır | |
campaign.ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
campaign.ab_test.winner | object | Hayır | |
campaign.ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
campaign.ab_test.winner_variant_id | string | Hayır | |
campaign.ab_test.decided_at | string | Hayır | |
campaign.ab_test.decided_by | string | Hayır | |
campaign.ab_test.significance | object | Hayır | |
campaign.variants | array<object> | Evet | |
campaign.variants[].id | string | Evet | |
campaign.variants[].name | string | Evet | |
campaign.variants[].weight_percent | integer | Evet | |
campaign.variants[].content | map<string, any> | null | Evet | |
campaign.variants[].is_control | boolean | Evet | |
campaign.variants[].position | integer | Evet | |
campaign.type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
campaign.status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
campaign.audience | map<string, any> | Evet | |
campaign.content | map<string, any> | Evet | |
campaign.template_id | string | null | Evet | |
campaign.template_version | integer | null | Evet | |
campaign.delivery | object | Evet | |
campaign.delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
campaign.delivery.delivery_time_of_day | string | Hayır | |
campaign.delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
campaign.delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
campaign.delivery.priority | 5 | 10 | Hayır | |
campaign.delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
campaign.delivery.frequency_cap_exempt | boolean | Hayır | |
campaign.delivery.quiet_hours_exempt | boolean | Hayır | |
campaign.delivery.one_per_user | boolean | Hayır | |
campaign.recurrence | object | null | Evet | |
campaign.approval | object | Evet | |
campaign.approval.required | boolean | Evet | |
campaign.approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
campaign.approval.requested_by | string | Hayır | |
campaign.approval.requested_at | string | Hayır | |
campaign.approval.approved_by | string | Hayır | |
campaign.approval.approved_at | string | Hayır | |
campaign.approval.rejected_by | string | Hayır | |
campaign.approval.rejected_at | string | Hayır | |
campaign.stats | object | Evet | |
campaign.stats.runs | integer | Hayır | |
campaign.stats.targeted | integer | Hayır | |
campaign.stats.suppressed | integer | Hayır | |
campaign.stats.sent | integer | Hayır | |
campaign.stats.delivered | integer | Hayır | |
campaign.stats.failed | integer | Hayır | |
campaign.stats.opened | integer | Hayır | |
campaign.stats.clicked | integer | Hayır | |
campaign.stats.converted | integer | Hayır | |
campaign.stats.bounced | integer | Hayır | |
campaign.stats.complained | integer | Hayır | |
campaign.stats.unsubscribed | integer | Hayır | |
campaign.stats.sms_segments | integer | Hayır | |
campaign.send_at | string | null | Evet | |
campaign.next_run_at | string | null | Evet | |
campaign.last_run_at | string | null | Evet | |
campaign.run_count | integer | Evet | |
campaign.error | string | null | Evet | |
campaign.created_by | string | null | Evet | |
campaign.started_at | string | null | Evet | |
campaign.completed_at | string | null | Evet | |
campaign.created_at | string | Evet | |
campaign.updated_at | string | Evet | |
campaign.estimated_recipients | integer | null | Evet | |
rates | object | Evet | |
rates.delivery_rate | number | null | Evet | |
rates.open_rate | number | null | Evet | |
rates.click_rate | number | null | Evet | |
rates.failure_rate | number | null | Evet | |
rates.conversion_rate | number | null | Evet | |
channels | array<object> | Evet | |
channels[].channel | enum | Evet | Değerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs" |
channels[].targeted | integer | Evet | |
channels[].sent | integer | Evet | |
channels[].failed | integer | Evet | |
channels[].opened | integer | Evet | |
channels[].clicked | integer | Evet | |
hourly | array<object> | Evet | |
hourly[].hour | string | Evet | |
hourly[].sent | integer | Evet | |
hourly[].failed | integer | Evet | |
hourly[].opened | integer | Evet | |
hourly[].clicked | integer | Evet | |
errors | array<object> | Evet | |
errors[].code | string | Evet | |
errors[].count | integer | Evet | |
messages | array<object> | Evet | |
messages[].id | string | Evet | |
messages[].app_id | string | Evet | |
messages[].source | enum | Evet | Değerler: "campaign", "api", "journey", "test" |
messages[].status | enum | Evet | Değerler: "queued", "processing", "completed", "cancelled", "failed" |
messages[].idempotency_key | string | null | Evet | |
messages[].name | string | null | Evet | |
messages[].content | map<string, any> | Evet | |
messages[].target | map<string, any> | Evet | |
messages[].options | map<string, any> | Evet | |
messages[].labels | array<string> | Evet | |
messages[].category | string | null | Evet | |
messages[].template_id | string | null | Evet | |
messages[].campaign_id | string | null | Evet | |
messages[].variants | array<object> | null | Evet | |
messages[].counts | object | Evet | |
messages[].counts.targeted | integer | Hayır | |
messages[].counts.suppressed | integer | Hayır | |
messages[].counts.sent | integer | Hayır | |
messages[].counts.delivered | integer | Hayır | |
messages[].counts.failed | integer | Hayır | |
messages[].counts.errored | integer | Hayır | |
messages[].counts.expired | integer | Hayır | |
messages[].counts.opened | integer | Hayır | |
messages[].counts.clicked | integer | Hayır | |
messages[].counts.converted | integer | Hayır | |
messages[].counts.bounced | integer | Hayır | |
messages[].counts.complained | integer | Hayır | |
messages[].counts.unsubscribed | integer | Hayır | |
messages[].counts.sms_segments | integer | Hayır | |
messages[].requested_by | object | Evet | |
messages[].requested_by.type | enum | Evet | Değerler: "api_key", "account", "system" |
messages[].requested_by.id | string | Hayır | |
messages[].error | string | null | Evet | |
messages[].scheduled_for | string | null | Evet | |
messages[].started_at | string | null | Evet | |
messages[].completed_at | string | null | Evet | |
messages[].created_at | string | Evet | |
messages[].updated_at | string | Evet |
Örnek yanıt:
{
"channels": [
"web_push"
],
"campaign": {
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate"
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
},
"rates": {
"delivery_rate": 1.5,
"open_rate": 1.5,
"click_rate": 1.5,
"failure_rate": 1.5,
"conversion_rate": 1.5
},
"hourly": [
{
"hour": "örnek",
"sent": 1,
"failed": 1,
"opened": 1,
"clicked": 1
}
],
"errors": [
{
"code": "örnek",
"count": 1
}
],
"messages": [
{
"name": "Sipariş bildirimleri",
"target": {
"include_external_ids": [
"user_42"
]
},
"status": "queued",
"id": "msg_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"source": "campaign",
"idempotency_key": "order-1001",
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"options": {},
"labels": [
"promo"
],
"category": "örnek",
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"campaign_id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"is_control": true
}
],
"counts": {
"targeted": 1,
"suppressed": 1
},
"requested_by": {
"type": "api_key",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W"
},
"error": "örnek",
"scheduled_for": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek"
}
]
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W/stats" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"A/B varyant karşılaştırması
Kimlik doğrulama: API anahtarı — kapsam analytics:read (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: CampaignVariantStats
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].variant_id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].is_control | boolean | Evet | |
variants[].targeted | integer | Evet | |
variants[].sent | integer | Evet | |
variants[].delivered | integer | Evet | |
variants[].opened | integer | Evet | |
variants[].clicked | integer | Evet | |
variants[].converted | integer | Evet | |
variants[].holdout | integer | Evet | |
variants[].open_rate | number | Evet | |
variants[].click_rate | number | Evet | |
variants[].conversion_rate | number | Evet | |
leader | string | null | Evet | |
significance | object | Evet | |
significance.p_value | number | Evet | |
significance.significant | boolean | Evet | |
significance.metric | string | Evet |
Örnek yanıt:
{
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"variant_id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"is_control": true,
"targeted": 1,
"sent": 1,
"delivered": 1,
"opened": 1,
"clicked": 1,
"converted": 1,
"holdout": 1,
"open_rate": 1.5,
"click_rate": 1.5,
"conversion_rate": 1.5
}
],
"leader": "örnek",
"significance": {
"p_value": 149.9,
"significant": true,
"metric": "örnek"
}
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W/variants/stats" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"A/B kazananını seç
Kimlik doğrulama: API anahtarı — kapsam notifications:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
İstek gövdesi (zorunlu)
Şema: SelectWinnerDto
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
variant_id | string | Evet | Uzunluk: 1–∞ |
Örnek:
{
"variant_id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W"
}Yanıtlar
200 — Başarılı.
Şema: Campaign
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
labels | array<string> | Evet | |
category | string | null | Evet | |
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].content | map<string, any> | null | Evet | |
variants[].is_control | boolean | Evet | |
variants[].position | integer | Evet | |
type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
audience | map<string, any> | Evet | |
content | map<string, any> | Evet | |
template_id | string | null | Evet | |
template_version | integer | null | Evet | |
delivery | object | Evet | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
delivery.priority | 5 | 10 | Hayır | |
delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Evet | |
approval | object | Evet | |
approval.required | boolean | Evet | |
approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
approval.requested_by | string | Hayır | |
approval.requested_at | string | Hayır | |
approval.approved_by | string | Hayır | |
approval.approved_at | string | Hayır | |
approval.rejected_by | string | Hayır | |
approval.rejected_at | string | Hayır | |
stats | object | Evet | |
stats.runs | integer | Hayır | |
stats.targeted | integer | Hayır | |
stats.suppressed | integer | Hayır | |
stats.sent | integer | Hayır | |
stats.delivered | integer | Hayır | |
stats.failed | integer | Hayır | |
stats.opened | integer | Hayır | |
stats.clicked | integer | Hayır | |
stats.converted | integer | Hayır | |
stats.bounced | integer | Hayır | |
stats.complained | integer | Hayır | |
stats.unsubscribed | integer | Hayır | |
stats.sms_segments | integer | Hayır | |
send_at | string | null | Evet | |
next_run_at | string | null | Evet | |
last_run_at | string | null | Evet | |
run_count | integer | Evet | |
error | string | null | Evet | |
created_by | string | null | Evet | |
started_at | string | null | Evet | |
completed_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet | |
estimated_recipients | integer | null | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate",
"delivery_time_of_day": "değer",
"throttle_per_minute": 1
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek",
"requested_at": "örnek",
"approved_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1,
"suppressed": 1,
"sent": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W/winner" \
-H "Authorization: Bearer $PUSHIZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"variant_id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W"
}'Abone bazlı teslimatlar
Kimlik doğrulama: API anahtarı — kapsam analytics:read (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
limit | sorgu | integer | Hayır | Varsayılan: 50; Aralık: 1–200 | 50 |
cursor | sorgu | string | Hayır | Uzunluk: 1–∞ | "eyJpZCI6Im1zZ18wMUpE…" |
app_id | sorgu | string | Hayır | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
status | sorgu | enum | Hayır | Değerler: "pending", "sent", "delivered", "failed", "bounced", "suppressed", "expired", "cancelled" | "pending" |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: DeliveryList
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
data | array<object> | Evet | |
data[].id | string | Evet | |
data[].message_id | string | Evet | |
data[].subscription_id | string | Evet | |
data[].user_id | string | null | Evet | |
data[].channel | enum | Evet | Değerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs" |
data[].provider | string | null | Evet | |
data[].status | enum | Evet | Değerler: "pending", "sent", "delivered", "failed", "bounced", "suppressed", "expired", "cancelled" |
data[].attempt_count | integer | Evet | |
data[].provider_message_id | string | null | Evet | |
data[].error_code | string | null | Evet | |
data[].error_message | string | null | Evet | |
data[].suppression_reason | string | null | Evet | |
data[].send_after | string | null | Evet | |
data[].sent_at | string | null | Evet | |
data[].delivered_at | string | null | Evet | |
data[].opened_at | string | null | Evet | |
data[].clicked_at | string | null | Evet | |
data[].failed_at | string | null | Evet | |
data[].created_at | string | Evet | |
next_cursor | string | null | Evet | |
has_more | boolean | Evet |
Örnek yanıt:
{
"data": [
{
"channel": "ios_push",
"status": "pending",
"send_after": "örnek",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"message_id": "msg_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"provider": "örnek",
"attempt_count": 1,
"provider_message_id": "msg_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"error_code": "örnek",
"error_message": "örnek",
"suppression_reason": "örnek",
"sent_at": "örnek",
"delivered_at": "örnek",
"opened_at": "örnek",
"clicked_at": "örnek",
"failed_at": "örnek",
"created_at": "örnek"
}
],
"next_cursor": "eyJpZCI6Im1zZ18wMUpE…",
"has_more": true
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W/deliveries?limit=50" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Başarısız teslimatlara yeniden gönder
Kimlik doğrulama: API anahtarı — kapsam notifications:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: Campaign
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
labels | array<string> | Evet | |
category | string | null | Evet | |
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].content | map<string, any> | null | Evet | |
variants[].is_control | boolean | Evet | |
variants[].position | integer | Evet | |
type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
audience | map<string, any> | Evet | |
content | map<string, any> | Evet | |
template_id | string | null | Evet | |
template_version | integer | null | Evet | |
delivery | object | Evet | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
delivery.priority | 5 | 10 | Hayır | |
delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Evet | |
approval | object | Evet | |
approval.required | boolean | Evet | |
approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
approval.requested_by | string | Hayır | |
approval.requested_at | string | Hayır | |
approval.approved_by | string | Hayır | |
approval.approved_at | string | Hayır | |
approval.rejected_by | string | Hayır | |
approval.rejected_at | string | Hayır | |
stats | object | Evet | |
stats.runs | integer | Hayır | |
stats.targeted | integer | Hayır | |
stats.suppressed | integer | Hayır | |
stats.sent | integer | Hayır | |
stats.delivered | integer | Hayır | |
stats.failed | integer | Hayır | |
stats.opened | integer | Hayır | |
stats.clicked | integer | Hayır | |
stats.converted | integer | Hayır | |
stats.bounced | integer | Hayır | |
stats.complained | integer | Hayır | |
stats.unsubscribed | integer | Hayır | |
stats.sms_segments | integer | Hayır | |
send_at | string | null | Evet | |
next_run_at | string | null | Evet | |
last_run_at | string | null | Evet | |
run_count | integer | Evet | |
error | string | null | Evet | |
created_by | string | null | Evet | |
started_at | string | null | Evet | |
completed_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet | |
estimated_recipients | integer | null | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate",
"delivery_time_of_day": "değer",
"throttle_per_minute": 1
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek",
"requested_at": "örnek",
"approved_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1,
"suppressed": 1,
"sent": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W/resend-failed" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Kampanya çalıştırmaları
Kimlik doğrulama: API anahtarı — kapsam analytics:read (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
campaignId | yol | string | Evet | "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: MessageList
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
data | array<object> | Evet | |
data[].id | string | Evet | |
data[].app_id | string | Evet | |
data[].source | enum | Evet | Değerler: "campaign", "api", "journey", "test" |
data[].status | enum | Evet | Değerler: "queued", "processing", "completed", "cancelled", "failed" |
data[].idempotency_key | string | null | Evet | |
data[].name | string | null | Evet | |
data[].content | map<string, any> | Evet | |
data[].target | map<string, any> | Evet | |
data[].options | map<string, any> | Evet | |
data[].labels | array<string> | Evet | |
data[].category | string | null | Evet | |
data[].template_id | string | null | Evet | |
data[].campaign_id | string | null | Evet | |
data[].variants | array<object> | null | Evet | |
data[].counts | object | Evet | |
data[].counts.targeted | integer | Hayır | |
data[].counts.suppressed | integer | Hayır | |
data[].counts.sent | integer | Hayır | |
data[].counts.delivered | integer | Hayır | |
data[].counts.failed | integer | Hayır | |
data[].counts.errored | integer | Hayır | |
data[].counts.expired | integer | Hayır | |
data[].counts.opened | integer | Hayır | |
data[].counts.clicked | integer | Hayır | |
data[].counts.converted | integer | Hayır | |
data[].counts.bounced | integer | Hayır | |
data[].counts.complained | integer | Hayır | |
data[].counts.unsubscribed | integer | Hayır | |
data[].counts.sms_segments | integer | Hayır | |
data[].requested_by | object | Evet | |
data[].requested_by.type | enum | Evet | Değerler: "api_key", "account", "system" |
data[].requested_by.id | string | Hayır | |
data[].error | string | null | Evet | |
data[].scheduled_for | string | null | Evet | |
data[].started_at | string | null | Evet | |
data[].completed_at | string | null | Evet | |
data[].created_at | string | Evet | |
data[].updated_at | string | Evet | |
next_cursor | string | null | Evet | |
has_more | boolean | Evet |
Örnek yanıt:
{
"data": [
{
"name": "Sipariş bildirimleri",
"target": {
"include_external_ids": [
"user_42"
]
},
"status": "queued",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"source": "campaign",
"idempotency_key": "order-1001",
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"options": {},
"labels": [
"promo"
],
"category": "örnek",
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"campaign_id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"is_control": true
}
],
"counts": {
"targeted": 1,
"suppressed": 1
},
"requested_by": {
"type": "api_key",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W"
},
"error": "örnek",
"scheduled_for": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek"
}
],
"next_cursor": "eyJpZCI6Im1zZ18wMUpE…",
"has_more": true
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/campaigns/cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W/messages" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Şablonlar
Şablonlar — 9 işlem (GET /v1/apps/{appId}/templates, POST /v1/apps/{appId}/templates, GET /v1/apps/{appId}/templates/{templateId}, …). OpenAPI 3.1.0 sözleşmesinden üretilir.
Journey’ler
Journey’ler — 19 işlem (GET /v1/apps/{appId}/journeys, POST /v1/apps/{appId}/journeys, GET /v1/apps/{appId}/journeys/{journeyId}, …). OpenAPI 3.1.0 sözleşmesinden üretilir.