API Dokümantasyonu
Wharobot API'si ile kendi yazılımınızdan — e-ticaret siteniz, WHMCS/WISECP paneliniz veya herhangi bir uygulamanızdan — tek bir HTTP isteğiyle WhatsApp mesajı gönderin. Mesajlar hesabınıza bağlı olan WhatsApp numarasından iletilir.
Hızlı Başlangıç
Beş dakikada ilk mesajınızı gönderin:
API anahtarınızı alın
Panelde Modül Yönetimi sayfasından anahtar oluşturun. midev_ ile başlar ve yalnızca size aittir.
WhatsApp cihazınızı bağlayın
Cihaz Bağla sayfasından QR kodu okutun. Mesajlar bu numaradan gönderilir.
İlk isteğinizi gönderin
midev_xxx yerine kendi anahtarınızı, numara yerine kendi test numaranızı yazın:
curl -X POST https://fortisense.net/api/send-message \
-H "Content-Type: application/json" \
-d '{
"api_key": "midev_xxxxxxxxxxxx",
"phone": "905321234567",
"message": "İlk mesajım 🎉"
}'
Kimlik Doğrulama
Kimlik doğrulama, istek gövdesindeki api_key alanı ile yapılır. Ayrı bir başlık (header) veya token akışı yoktur.
API anahtarınızı asla tarayıcıya koymayın. Anahtar yalnızca sunucu tarafı kodunuzda (backend) bulunmalıdır; JavaScript'e koyarsanız siteyi ziyaret eden herkes onu görür ve sizin numaranızdan mesaj gönderebilir. Anahtarı .env gibi bir yapılandırmada saklayın.
Mesaj Gönderme
https://fortisense.net/api/send-messageContent-Type: application/json
İstek Parametreleri
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
api_key | string | Zorunlu | Modül Yönetimi'nden aldığınız anahtar. |
phone | string | Zorunlu | Alıcı numarası, ülke kodu ile: 905321234567. Rakam dışı karakterler ve baştaki 0 otomatik temizlenir. |
message | string | Zorunlu | Gönderilecek metin. Satır atlamak için \n kullanın. |
Örnek İstek
curl -X POST https://fortisense.net/api/send-message \
-H "Content-Type: application/json" \
-d '{
"api_key": "midev_xxxxxxxxxxxx",
"phone": "905321234567",
"message": "Siparişiniz alındı ✅"
}'<?php
$ch = curl_init("https://fortisense.net/api/send-message");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode([
"api_key" => getenv("WHAROBOT_API_KEY"), // gizli tut
"phone" => "905321234567",
"message" => "Siparişiniz alındı ✅",
]),
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($response, true);
if ($code === 200 && ($data["status"] ?? null) === "success") {
// gönderildi — kalan kredi: $data["credits_remaining"]
} else {
error_log("WA gönderilemedi: " . ($data["error"] ?? $response));
}const res = await fetch("https://fortisense.net/api/send-message", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
api_key: process.env.WHAROBOT_API_KEY, // gizli tut
phone: "905321234567",
message: "Siparişiniz alındı ✅",
}),
});
const data = await res.json();
if (res.status === 200 && data.status === "success") {
console.log("Gönderildi. Kalan kredi:", data.credits_remaining);
} else {
console.error("Hata:", data.error);
}import os, requests
res = requests.post(
"https://fortisense.net/api/send-message",
json={
"api_key": os.environ["WHAROBOT_API_KEY"], # gizli tut
"phone": "905321234567",
"message": "Siparişiniz alındı ✅",
},
timeout=30,
)
data = res.json()
if res.status_code == 200 and data.get("status") == "success":
print("Gönderildi. Kalan kredi:", data["credits_remaining"])
else:
print("Hata:", data.get("error"))Yanıt & Alanlar
Başarılı Yanıt (HTTP 200)
{
"status": "success",
"message": "Mesaj gonderildi",
"credits_remaining": 49
}
| Alan | Tip | Açıklama |
|---|---|---|
status | string | Başarılıysa "success". |
message | string | İnsan-okunur durum metni. |
credits_remaining | integer | Bu gönderimden sonra hesabınızda kalan kredi. |
Hata Kodları
Hatalar HTTP durum kodu ve error alanı ile döner.
| Kod | Anlamı | Ne yapmalı |
|---|---|---|
| 400 | Eksik parametre | api_key, phone veya message gönderilmemiş. |
| 401 | Geçersiz API anahtarı | Anahtarı kontrol edin; yeniden oluşturduysanız eskisi geçersizdir. |
| 402 | Yetersiz bakiye | Krediniz bitmiş. Paket yenileyin veya bakiye yükleyin. |
| 403 | Paket süresi doldu / alan adı yasaklı | Paketinizi yenileyin. Tarayıcıdan çağırıyorsanız alan adınızı Modül'de tanımlayın. |
| 405 | Yöntem desteklenmiyor | Yalnızca POST kabul edilir. |
| 429 | Rate limit aşıldı | Saniyede birden fazla istek göndermeyin; araya gecikme koyun. |
| 500 | Gönderim hatası | Cihaz bağlı değil veya servise ulaşılamadı. Cihaz durumunu kontrol edin. |
Limitler
- Hız: saniyede en fazla 1 istek. Toplu gönderimde her mesaj arasına ~1 saniye gecikme koyun.
- Kredi: başarılı her mesaj 1 kredi düşer; kalanı
credits_remainingile takip edin. - Paket süresi: API anahtarı, paketinizin gün sayısı boyunca geçerlidir; süre dolunca
403döner. - Alan adı kısıtı: yalnızca istekte
Originbaşlığı varsa (tarayıcıdan çağrı) uygulanır. Sunucu tarafı çağrılarda devreye girmez.
Örnek Senaryolar
Sık kullanılan entegrasyon noktaları:
Sipariş bildirimi
Sipariş kaydedildikten sonra: "Merhaba {ad}, #{no} numaralı siparişiniz alındı ✅"
Kargo bildirimi
Durum "kargoya verildi" olunca: "Siparişiniz kargoya verildi 🚚 Takip: {takip_no}"
Doğrulama kodu (OTP)
Giriş/işlem doğrulamasında: "Doğrulama kodunuz: {kod}. Kimseyle paylaşmayın."
İpucu: Gönderimi sipariş kaydından sonra, tercihen arka planda (kuyruk) yapın — WhatsApp yavaşlarsa müşteri checkout'ta beklemesin.
En İyi Pratikler
- Anahtarı sunucuda tutun.
.envveya ortam değişkeni kullanın; koda gömmeyin, repoya commit etmeyin. - Sunucu tarafından çağırın. Tarayıcıdan çağırırsanız anahtar herkese görünür.
- Zaman aşımı koyun. İsteklerinize
timeouttanımlayın (örneklerde var). - Hataları yönetin.
402/429/500durumlarını loglayın;429ve500için gecikmeli tekrar deneyin. - Kullanıcıyı bekletmeyin. Gönderimi arka planda (kuyruk/iş) yapın.
Sıkça Sorulanlar
Mesajlar hangi numaradan gidiyor?
Hesabınıza bağladığınız WhatsApp numarasından. İstediğiniz zaman cihazı değiştirebilirsiniz.
Grup mesajı veya buton gönderebilir miyim?
Şu an yalnızca bireysel metin/medya mesajı desteklenir. Buton/liste gibi etkileşimli mesajlar için resmi WhatsApp Business Platform gerekir.
Medya (resim/dosya) gönderebilir miyim?
Panel üzerinden medya gönderimi desteklenir. API üzerinden medya için destek ile iletişime geçin.
Takıldım, nereden yardım alırım?
Destek Talebi oluşturabilir veya bize ulaşabilirsiniz.