Test anahtarı, entegrasyonunuzu gerçek müşterilere dokunmadan geliştirmenizi sağlar. Bu sayfa test modunun neyi simüle ettiğini ve neyi etkilemediğini anlatır.
#Test anahtarı nedir?
vmk_test_ ile başlayan anahtarlar test modundadır. Panelde API → Anahtarlar sayfasından anahtar oluştururken modu test seçin.
Test modunda:
POST /messagesMeta'ya istek göndermez. Mesaj gerçek alıcıya gitmez.- Yanıtta
mode: "test",simulated: truevecredits_used: 0döner. wamidsahtedir vetest.ile başlar.POST /mediaMeta'ya dosya yüklemez;test.media.önekli bir kimlik döner.- Arama eylemleri Meta'ya gitmeden simüle edilir; arama kimliği
test.wacid.ile başlar. - Okuma uçları (
GET) canlı anahtarla aynı veriyi döner. - Kapsam, hız sınırı ve idempotency kuralları canlı anahtardaki gibi çalışır.
- Test mesajları raporlara (
GET /reports/summary) dahil edilmez.
wamid için Meta durum olayı (message.status.*) gelmez. Teslim akışını uçtan uca görmek için canlı anahtar ve kendi numaranızla deneyin.#Uç bazında davranış
Hiçbir yazma ucu test anahtarıyla gerçek veriye ya da Meta'ya dokunmaz. İstek normal doğrulanır (aynı 4xx hataları döner), sonra ya gerçekçi bir başarı yanıtı simüle edilir (simulated: true, mode: "test") ya da 403 test_mode_unsupported döner. İki durumda da yanıtta X-Test-Mode: 1 başlığı bulunur.
| Uç | Test anahtarıyla |
|---|---|
POST /messages, POST /media, POST /messages/read, arama eylemleri, POST /calls/permission-request, PATCH /numbers/{phone_number_id}/calling | Simüle edilir. |
POST /templates (202, PENDING, id: 0), PATCH /templates/{id}, DELETE /templates/{id} | Simüle edilir; kayıt ve Meta'ya gönderim yok. |
PATCH /profile/{phone_number_id}, PATCH /numbers/{phone_number_id}/settings, PATCH /account/settings, PATCH /account/retention | Simüle edilir; istenen değerler mevcutlarla birleştirilip döner, kaydedilmez. |
POST /contacts (id: 0), POST /contacts/bulk | Simüle edilir; mükerrer kontrolü gerçek rehbere göre yapılır. |
POST /webhooks/redeliver | Simüle edilir; teslimatlar sayılır, kuyruğa alınmaz. |
POST, PATCH, DELETE /webhooks, POST /webhooks/{id}/rotate-secret | 403 test_mode_unsupported — abonelikleri canlı anahtarla yönetin. POST /webhooks/{id}/test çalışır. |
POST /privacy/erasure | 403 test_mode_unsupported (doğrulama hataları yine döner). |
POST /numbers/{phone_number_id}/history-import, POST /numbers/{phone_number_id}/detach, form yazma uçları | 403 test_mode_unsupported |
POST /templates/sync | Çalışır; yalnız Meta'daki şablon durumlarını yerel listeye okur. |
POST /templates/{id}, POST /templates/{id}/copy (202, id: 0), DELETE /templates?name=…, POST /templates/media (201, header_handle: "4::test…", header_media_ref: null) | Simüle edilir; kayıt ve Meta'ya gönderim yok. Doğrulama, sahiplik ve durum kuralları (404 / 409 / 422) canlıdaki gibi çalışır. POST /templates/media multipart girişinde tür ve boyut denetimi yapılır; url ve media_id girişinde indirme yapılmaz. |
#Sahte gelen mesaj oluşturun
Webhook alıcınızı denemek için POST /test/inbound kullanın. Bu uç yalnız test anahtarıyla çalışır; sahte mesajı gerçek gelen mesaj hattından geçirir ve imzalı olayı aktif webhook aboneliklerinize gönderir.
curl -X POST https://api.verimerkezi.app/wa/test/inbound \
-H "Authorization: Bearer $VM_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{ "phone_number_id": "1234567890", "type": "text", "from": "905550000000", "text": "Merhaba, bu bir test mesajıdır." }'const res = await fetch('https://api.verimerkezi.app/wa/test/inbound', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.VM_TEST_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ phone_number_id: '1234567890', type: 'text', from: '905550000000', text: 'Merhaba, bu bir test mesajıdır.' }),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.verimerkezi.app/wa/test/inbound",
headers={"Authorization": f"Bearer {os.environ['VM_TEST_KEY']}"},
json={"phone_number_id": "1234567890", "type": "text", "from": "905550000000", "text": "Merhaba, bu bir test mesajıdır."},
)
print(res.status_code, res.json())<?php
$ch = curl_init('https://api.verimerkezi.app/wa/test/inbound');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('VM_TEST_KEY'), 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['phone_number_id' => '1234567890', 'type' => 'text', 'from' => '905550000000', 'text' => 'Merhaba, bu bir test mesajıdır.']),
]);
print_r(json_decode(curl_exec($ch), true));type alanı dört değer alır:
text:message.receivedolayı üretir.textzorunludur.edit:message.editedolayı üretir.textveoriginal_message_idgönderin.revoke:message.revokedolayı üretir.original_message_idgönderin.app_contact_sync:add,updateveremoveiçeren örnek bircontact.syncedolayı üretir. Rehbere kayıt yazılmaz. Bkz. Uygulama rehberi.
Başarılı istek 202 Accepted döner. Canlı anahtarla çağrılırsa 403 test_only alırsınız.
#Webhook bağlantısını sınayın
Abonelik oluşturduktan sonra POST /webhooks/{id}/test ile anında imzalı bir test.ping olayı gönderebilirsiniz. Bu uç test ve canlı anahtarla çalışır. Ayrıntı: Webhooklar.
#Canlıya geçiş
- Panelden
vmk_live_anahtarı oluşturun ve yalnız gereken kapsamları seçin. - Ortam değişkenini canlı anahtarla değiştirin. Kodda başka değişiklik gerekmez.
- Kredi bakiyenizi
GET /credit/balanceile kontrol edin vecredit.lowolayına abone olun.
