Bu rehberde bir API anahtarı oluşturacak, hesabınızı doğrulayacak ve ilk WhatsApp mesajınızı göndereceksiniz. Toplam süre yaklaşık 5 dakikadır.
#Başlamadan önce
Şunlara ihtiyacınız var:
- Bir Veri Merkezi hesabı (verimerkezi.app üzerinden ücretsiz kayıt).
- Panelde Meta Embedded Signup ile bağlanmış bir WhatsApp Business numarası.
- Meta tarafından onaylanmış en az bir mesaj şablonu (24 saat penceresi dışında mesaj göndermek için).
https://api.verimerkezi.app/wa taban adresine yapılır. API yalnız HTTPS ile çalışır.#1. API anahtarı oluşturun
- Panelde API → Anahtarlar sayfasını açın.
- Yeni Anahtar Oluştur'a tıklayın, anahtara bir ad verin.
- Mod olarak önce test seçin. Test anahtarı
vmk_test_ile başlar; mesajları Meta'ya göndermez ve kredi düşmez. - Anahtarı kopyalayın. Anahtar yalnız bir kez gösterilir.
Anahtarı kodunuza yazmayın; ortam değişkeninde saklayın:
export VM_API_KEY="vmk_test_..."#2. Bağlantıyı doğrulayın
GET /me çağrısı anahtarın kime ait olduğunu ve kredi bakiyenizi döndürür.
curl https://api.verimerkezi.app/wa/me \
-H "Authorization: Bearer $VM_API_KEY"const res = await fetch('https://api.verimerkezi.app/wa/me', {
headers: { Authorization: `Bearer ${process.env.VM_API_KEY}` },
});
console.log(await res.json());import os, requests
res = requests.get(
"https://api.verimerkezi.app/wa/me",
headers={"Authorization": f"Bearer {os.environ['VM_API_KEY']}"},
)
print(res.json())<?php
$ch = curl_init('https://api.verimerkezi.app/wa/me');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('VM_API_KEY')],
]);
print_r(json_decode(curl_exec($ch), true));Yanıtta api_key.mode değeri test olmalıdır:
{
"ok": true,
"user": { "id": 35, "email": "[email protected]", "name": "Ahmet Yılmaz", "role": "customer" },
"api_key": { "id": 12, "name": "Deneme", "key_prefix": "vmk_test_k3m9q2", "mode": "test", "scopes": ["*"], "expires_at": null },
"account_settings": { "revoke_edit_clean": false, "default_automation_enabled": null, "default_opt_out_autoreply_enabled": null },
"credits": { "balance": 9876, "packages": [] }
}#3. Numaranızın kimliğini alın
Mesajlar bir numaradan gönderilir. Numaranızın Meta kimliğini (phone_number_id) öğrenin:
curl https://api.verimerkezi.app/wa/numbers \
-H "Authorization: Bearer $VM_API_KEY"Yanıttaki numbers[0].phone_number_id değerini not edin. Bu rehberde 1234567890 kullanılmıştır.
#4. İlk mesajı gönderin
Onaylı bir şablonla mesaj gönderin. Idempotency-Key başlığı, ağ hatasında isteği güvenle tekrarlamanızı sağlar.
curl -X POST https://api.verimerkezi.app/wa/messages \
-H "Authorization: Bearer $VM_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"phone_number_id": "1234567890",
"to": "905550000000",
"type": "template",
"template": {
"name": "siparis_onayi",
"language": { "code": "tr" },
"components": [
{ "type": "body", "parameters": [{ "type": "text", "text": "Ahmet" }] }
]
}
}'import { randomUUID } from 'node:crypto';
const res = await fetch('https://api.verimerkezi.app/wa/messages', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.VM_API_KEY}`,
'Content-Type': 'application/json',
'Idempotency-Key': randomUUID(),
},
body: JSON.stringify({
phone_number_id: '1234567890',
to: '905550000000',
type: 'template',
template: {
name: 'siparis_onayi',
language: { code: 'tr' },
components: [{ type: 'body', parameters: [{ type: 'text', text: 'Ahmet' }] }],
},
}),
});
console.log(res.status, await res.json());import os, uuid, requests
res = requests.post(
"https://api.verimerkezi.app/wa/messages",
headers={
"Authorization": f"Bearer {os.environ['VM_API_KEY']}",
"Idempotency-Key": str(uuid.uuid4()),
},
json={
"phone_number_id": "1234567890",
"to": "905550000000",
"type": "template",
"template": {
"name": "siparis_onayi",
"language": {"code": "tr"},
"components": [{"type": "body", "parameters": [{"type": "text", "text": "Ahmet"}]}],
},
},
)
print(res.status_code, res.json())<?php
$govde = [
'phone_number_id' => '1234567890',
'to' => '905550000000',
'type' => 'template',
'template' => [
'name' => 'siparis_onayi',
'language' => ['code' => 'tr'],
'components' => [['type' => 'body', 'parameters' => [['type' => 'text', 'text' => 'Ahmet']]]],
],
];
$ch = curl_init('https://api.verimerkezi.app/wa/messages');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('VM_API_KEY'),
'Content-Type: application/json',
'Idempotency-Key: ' . bin2hex(random_bytes(16)),
],
CURLOPT_POSTFIELDS => json_encode($govde),
]);
print_r(json_decode(curl_exec($ch), true));Başarılı istek 201 Created döner:
{
"ok": true,
"id": 48213,
"wamid": "test.4f9a1c2b7e3d5a6081c2d3e4",
"to": "905550000000",
"type": "template",
"status": "sent",
"mode": "test",
"simulated": true,
"credits_used": 0,
"balance": 9876
}Test anahtarında simulated: true döner ve mesaj gerçek alıcıya gitmez. Gerçek gönderim için aynı isteği vmk_live_ anahtarıyla yapın; her başarılı gönderim 1 kredi düşer.
#Sonraki adımlar
- Mesaj gönderme: metin, medya, tepki ve form mesajları.
- Webhooklar: gelen mesajları ve teslim durumlarını sunucunuzda alın.
- Kimlik doğrulama: kapsamlar, IP kısıtı ve anahtar güvenliği.
- API referansı: tüm alanlar ve hata kodları.
