İçeriğe geç
Veri MerkeziVeri MerkeziAPI

API referansı

API anahtarının sahibi olan hesabın bilgileri, hesap geneli ayarlar, KVKK işlemleri ve webhook teslimat sağlığı.

#Account nesnesi

  • userobject
    Hesap sahibi: id, email, name, role.
  • api_keyobject
    İsteği yapan anahtar: id, name, key_prefix, mode (live/test), scopes, expires_at.
  • account_settingsobject
    Hesap ayarları: revoke_edit_clean, default_automation_enabled, default_opt_out_autoreply_enabled.
  • creditsobject
    Mesaj kredisi: balance ve etkin packages listesi.
Account nesnesi
{
  "ok": true,
  "user": {
    "id": 35,
    "email": "[email protected]",
    "name": "Ahmet Yılmaz",
    "role": "customer"
  },
  "api_key": {
    "id": 12,
    "name": "Üretim sunucusu",
    "key_prefix": "vmk_live_k3m9q2",
    "mode": "live",
    "scopes": [
      "*"
    ],
    "expires_at": null
  },
  "account_settings": {
    "revoke_edit_clean": false,
    "default_automation_enabled": null,
    "default_opt_out_autoreply_enabled": null
  },
  "credits": {
    "balance": 9876,
    "packages": [
      {
        "id": 42,
        "package_name": "Profesyonel",
        "credits_purchased": 10000,
        "credits_used": 124,
        "credits_remaining": 9876,
        "expires_at": "2027-05-27 14:33:21"
      }
    ]
  }
}

#Hesap bilgisini getir

GET/me
API anahtarının sahibini, anahtarın kendisini, hesap ayarlarını ve kredi bakiyesini döndürür. Entegrasyonunuzu doğrulamak için ilk çağrı olarak kullanın.
Herhangi bir geçerli anahtarla çağrılabilir; ek kapsam gerekmez.
curl -X GET "https://api.verimerkezi.app/wa/me" \
  -H "Authorization: Bearer $VM_API_KEY"
Yanıt 200
null

#Hesap ayarlarını güncelle

PATCH/account/settings
Hesabınızdaki tüm numaralara toplu uygulanan ayarları ve bundan sonra bağlanacak numaraların varsayılanlarını değiştirir. En az bir alan gönderin; değerler JSON boolean olmalıdır. Kapsam: profile:write
Yanıttaki settings değerleri, ayar tüm numaralarda açıksa true olur.

İstek gövdesi

  • revoke_edit_cleanbooleanisteğe bağlı
    Açıkken silme/düzenleme olaylarında yalnız message.revoked / message.edited yayınlanır; message.received gönderilmez, 24 saatlik pencere uzamaz, otomasyon ve abonelikten çıkış yanıtı tetiklenmez. Tüm numaralara uygulanır.Varsayılan: False
  • automation_enabledbooleanisteğe bağlı
    Veri Merkezi otomasyon motorunu tüm mevcut numaralarda açar/kapatır.
  • opt_out_autoreply_enabledbooleanisteğe bağlı
    Her zaman true: 11.10.2026'dan beri RET onay mesajı zorunludur, kapatılamaz; false gönderilirse yok sayılır ve yanıtta true döner. Çıkış talebi her durumda kaydedilir.
  • default_automation_enabledbooleanisteğe bağlı
    Bundan sonra bağlanacak numaraların otomasyon varsayılanı.
  • default_opt_out_autoreply_enabledbooleanisteğe bağlı
    Bundan sonra bağlanacak numaraların çıkış yanıtı varsayılanı. Her zaman true uygulanır (RET onay mesajı zorunlu); false yok sayılır.

Hatalar

DurumKodNe zaman
403insufficient_scopeAnahtarda profile:write kapsamı yok.
422invalid_requestDeğiştirilecek alan yok ya da değer boolean değil.
curl -X PATCH "https://api.verimerkezi.app/wa/account/settings" \
  -H "Authorization: Bearer $VM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "revoke_edit_clean": true,
    "default_automation_enabled": false
  }'
Yanıt 200
{
  "ok": true,
  "numbers_updated": 2,
  "numbers_total": 2,
  "settings": {
    "revoke_edit_clean": true,
    "automation_enabled": true,
    "opt_out_autoreply_enabled": true,
    "default_automation_enabled": false,
    "default_opt_out_autoreply_enabled": null
  }
}

#Veri saklama sürelerini ayarla

PATCH/account/retention
KVKK kapsamında hesap düzeyindeki saklama sürelerini gün olarak kaydeder. En az bir alan gönderin. Kapsam: profile:write
v2.19.2 dokümanına göre saklama süresi şu an yalnız arama kayıtlarına uygulanır; mesaj ve medya için otomatik silme henüz etkin değildir. Medya dosyaları varsayılan olarak süresiz saklanır.

İstek gövdesi

  • messages_daysintegeristeğe bağlı
    Mesaj kayıtları için gün (1–3650).
  • media_daysintegeristeğe bağlı
    Medya dosyaları için gün (1–3650).
  • webhook_deliveries_daysintegeristeğe bağlı
    Giden webhook teslim kayıtları için gün (1–365).

Hatalar

DurumKodNe zaman
403insufficient_scopeAnahtarda profile:write kapsamı yok.
422invalid_requestAlan yok, tam sayı değil ya da aralık dışında.
curl -X PATCH "https://api.verimerkezi.app/wa/account/retention" \
  -H "Authorization: Bearer $VM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "messages_days": 365,
    "media_days": 180,
    "webhook_deliveries_days": 30
  }'
Yanıt 200
{
  "ok": true,
  "retention": {
    "messages_days": 365,
    "media_days": 180,
    "webhook_deliveries_days": 30
  },
  "note": "Saklama süreleri kaydedildi. Süre dolan veriler periyodik temizlik işiyle silinir; süre verilmeyen tür varsayılan olarak saklanır."
}

#Kişiye ait verileri sil (KVKK)

POST/privacy/erasure
Bir son kullanıcının silinme/unutulma talebini işler. Kişiye ait mesaj gövdeleri anonimleştirilir; medya, konuşma bilgileri, giden webhook teslim gövdeleri ve idempotency yanıtları silinir. Abonelikten çıkış (onay) kaydı korunur. İşlem idempotenttir. 2.29.0: isteğe bağlı reference yanıtta ve privacy.erasure_completed olayında aynen döner; Idempotency-Key ile yapılan yeniden deneme aynı erasure_id ve yanıtı döndürür, silme ikinci kez çalışmaz. Kapsam: profile:write
Tamamlanınca privacy.erasure_completed olayı yayınlanır (* aboneliğine dahil değildir).
erased nesnesi tablo bazında silinen kayıt sayılarını içerir; anahtarlar örnektir.
Kişinin uygulama rehberi kayıtları (GET /app-contacts) da silinir; sayısı erased.app_contacts.

Başlıklar

  • Idempotency-Keyisteğe bağlı
    8–128 karakterlik benzersiz anahtar (UUID önerilir). Aynı anahtar ve aynı gövdeyle yapılan tekrar, ilk yanıtı (aynı erasure_id) Idempotent-Replay: true başlığıyla döndürür; silme yeniden çalışmaz. 24 saat saklanır. (2.29.0)

İstek gövdesi

  • wa_idstringisteğe bağlı
    Kişinin telefon numarası (8–15 hane). wa_id ya da user_id zorunludur.
  • user_idstringisteğe bağlı
    Kişinin BSUID değeri (telefonu görünmeyen kullanıcılar için).
  • phone_number_idstringisteğe bağlı
    İsteğe bağlı; verilirse hesabınıza ait olmalıdır.
  • referencestringisteğe bağlı
    İsteğe bağlı, 1–64 karakter: kendi talep kimliğiniz. Yanıtta ve privacy.erasure_completed olayında aynen döner (2.29.0).

Hatalar

DurumKodNe zaman
403insufficient_scopeAnahtarda profile:write kapsamı yok.
404number_not_foundNumara size ait değil ya da aktif değil.
422invalid_requestwa_id ve user_id ikisi de yok ya da biçim hatalı.
500erasure_failedSilme tamamlanamadı; tekrar deneyin.
curl -X POST "https://api.verimerkezi.app/wa/privacy/erasure" \
  -H "Authorization: Bearer $VM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "wa_id": "905550000000",
    "phone_number_id": "1234567890",
    "reference": "crm-silme-4711"
  }'
Yanıt 202
{
  "ok": true,
  "status": "completed",
  "erasure_id": "ers_0123456789abcdef01234567",
  "phone_number_id": "1234567890",
  "wa_id": "905550000000",
  "user_id": null,
  "reference": "crm-silme-4711",
  "completed_at": "2026-10-10T09:00:00Z",
  "erased": {
    "messages": 42,
    "media": 3
  }
}

#Webhook teslimat sağlığını getir

GET/health
Hesabınızın webhook teslimat durumunu döndürür: kuyruk derinliği, son bir saatteki teslim sayısı, ortalama ve p95 gecikme, son 24 saatteki ölü teslimler. İzleme panolarında kullanın.
Kuyruk 1000'i ya da p95 gecikme 120 saniyeyi aşarsa status değeri degraded olur.
curl -X GET "https://api.verimerkezi.app/wa/health" \
  -H "Authorization: Bearer $VM_API_KEY"
Yanıt 200
{
  "ok": true,
  "status": "ok",
  "time": "2026-10-10T09:00:00Z",
  "webhook_delivery": {
    "active_subscriptions": 1,
    "queue_depth": 0,
    "delivered_last_hour": 240,
    "latency_seconds_last_hour": {
      "avg": 1.2,
      "p95": 3
    },
    "dead_last_24h": 0,
    "last_delivered_at": "2026-10-10T11:59:58+03:00"
  },
  "meta_webhook": {
    "last_received_at": "2026-10-10T11:59:59+03:00",
    "failed_last_hour": 0
  }
}