Ana içeriğe geç

Mesaj gönderme

Mesajlar POST https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/ adresine, sonuna mesaj türü eklenerek gönderilir: text, template, image, video, document, audio, location, replyReaction, markAsRead (örneğin .../messages/text). Başarılı gönderimde data.id mesajın kimliğidir; durumu (iletildi, okundu) mesaj geçmişinden ya da bildirimlerden izlenir.

Metin​

WhatsApp, serbest mesaja yalnız son 24 saatte size yazmış kişiye izin verir; diğer durumda şablon kullanılır.

{
"method": "POST",
"url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/text",
"auth": "Basic kullanıcı:şifre",
"headers": {
"Content-Type": "application/json"
},
"body": {
"to": "905321112233",
"message": "Merhaba, siparişiniz hazır."
}
}

Yanıt 200:

{
"status": true,
"data": {
"id": "d9481186-ee5a-45a3-8859-f1a16c060e45",
"to": "905321112233",
"from": "908501110077",
"from_user_id": null,
"to_user_id": null,
"profile_name": null,
"username": null,
"status": "sending",
"reactions": [],
"custom": {},
"created_at": "2026-03-11 11:07:20",
"updated_at": "2026-03-11 11:07:20",
"view_at": null,
"component": "text",
"template_payload": null,
"text": { "message": "Merhaba, siparişiniz hazır. " }
}
}

Tarih biçimi: yanıtlardaki tarihler (created_at, updated_at, view_at) yıl-gün-ay biçimindedir: YYYY-DD-MM HH:mm:ss, Türkiye saati. Örnekteki 2026-03-11 11:07:20 = 3 Kasım 2026, 11:07. Mesaj geçmişi filtresine gönderilen start_date / end_date ise normal YYYY-MM-DD HH:mm:ss'dir.

Birden fazla numaranız varsa gönderen from ile seçilir:

{
"method": "POST",
"url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/text",
"auth": "Basic kullanıcı:şifre",
"headers": {
"Content-Type": "application/json"
},
"body": {
"to": "905321112233",
"message": "Merhaba",
"from": "908501110078"
}
}

Şablon​

Şablon onaylı (APPROVED) olmalıdır. Değişkenler ({{1}}, {{2}}) components içinde sırayla verilir.

Sıralı değişkenler ({{1}}, {{2}} …). Şablonun metni şöyle olsun:

Merhaba {{1}}, kargonuz 2 iş günü içinde teslim edilecektir. {{2}} dileriz.

Değerler parameters içinde aynı sırayla yazılır: 1. satır {{1}}'in, 2. satır {{2}}'nin yerine geçer.

{
"method": "POST",
"url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/template",
"auth": "Basic kullanıcı:şifre",
"headers": { "Content-Type": "application/json" },
"body": {
"to": "905321112233",
"template": "kargo_teslim",
"language": "tr",
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "text": "Ahmet Bey" },
{ "type": "text", "text": "İyi günler" }
]
}
]
}
}

Giden mesaj: "Merhaba Ahmet Bey, kargonuz 2 iş günü içinde teslim edilecektir. İyi günler dileriz."

Adlı değişkenler ({{musteri_adi}} gibi). Şablon metni:

Merhaba {{musteri_adi}}, {{siparis_no}} numaralı siparişiniz hazırlandı.

Her değerin yanına parameter_name ile değişkenin adı yazılır:

{
"method": "POST",
"url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/template",
"auth": "Basic kullanıcı:şifre",
"headers": { "Content-Type": "application/json" },
"body": {
"to": "905321112233",
"template": "siparis_hazirlandi",
"language": "tr",
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "parameter_name": "musteri_adi", "text": "Ahmet" },
{ "type": "text", "parameter_name": "siparis_no", "text": "12345" }
]
}
]
}
}

Değişkeni olmayan şablonda components gönderilmez. Değişken sayısı şablondakiyle aynı olmalıdır; eksik ya da fazla değer gönderilirse WhatsApp isteği reddeder. Hangi şablonda kaç değişken olduğu ve biçimi (parameter_format: POSITIONAL / NAMED) şablon listesinden görülür.

{
"method": "POST",
"url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/template",
"auth": "Basic kullanıcı:şifre",
"headers": {
"Content-Type": "application/json"
},
"body": {
"to": "905321112233",
"template": "siparis_hazir",
"language": "tr",
"components": [
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "Mehmet"
}
]
}
]
}
}

Yanıt 200:

{
"status": true,
"data": {
"id": "bceb4fb2-d72f-48cf-8e77-0e8fbc9448fb",
"to": "905321112233",
"from": "908501110077",
"status": "sending",
"component": "template",
"template_payload": {
"name": "siparis_hazir",
"language": "tr",
"components": [{ "type": "body", "parameters": [{ "type": "text", "text": "Mehmet" }] }]
},
"template": { "message": "<WP_BODY> Merhaba {{1}}, siparişiniz hazır. </WP_BODY> " }
}
}

Onayı beklenen şablonda yanıt 400:

{
"status": false,
"httpStatus": 400,
"message": "Template PENDING",
"error": { "error": { "code": 132001, "message": "Template PENDING" } }
}

Doğrulama kodu (OTP)​

OTP, doğrulama (AUTHENTICATION) şablonuyla gönderilir. Her numarada kurulumda netgsm_verify_code şablonu açılır; kod hem gövdeye hem "Kodu kopyala" düğmesine verilir. Numarasını gizlemiş kişiye (TR.…) doğrulama şablonu gönderilemez, alıcı telefon numarası olmalıdır. Ücret için Ücretlendirme sayfasına bakın.

{
"method": "POST",
"url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/template",
"auth": "Basic kullanıcı:şifre",
"headers": {
"Content-Type": "application/json"
},
"body": {
"to": "905321112233",
"template": "netgsm_verify_code",
"language": "tr",
"components": [
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "482913"
}
]
},
{
"type": "button",
"sub_type": "url",
"index": 0,
"parameters": [
{
"type": "text",
"text": "482913"
}
]
}
]
}
}

Yanıt 200: şablon yanıtındaki gibi (component: "template"). OTP paketi yoksa 402 dönebilir:

{ "status": false, "message": "Hesabınızda OTP Whatsapp Paketi tanımlı değildir." }

Görsel, video, belge, ses​

messages/image · messages/video · messages/document · messages/audio. Sınırlar: görsel 5 MB, video ve ses 16 MB, belge 100 MB.

Dosyadan (multipart):

{
"method": "POST",
"url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/image",
"auth": "Basic kullanıcı:şifre",
"headers": {
"Content-Type": "multipart/form-data"
},
"body": {
"to": "905321112233",
"type": "file",
"file": "(dosya) kampanya.png"
}
}

Yanıt 200:

{
"status": true,
"data": {
"id": "d22cfc2a-dda7-4788-a4d1-cae4ed6a2ed2",
"to": "905321112233",
"from": "908501110077",
"status": "sending",
"component": "image",
"image": { "caption": "", "media_id": "e32a0a07151a2759", "media_url": "https://<medya adresi>/af60431fb577c7dd" }
}
}

Adresten (JSON):

{
"method": "POST",
"url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/document",
"auth": "Basic kullanıcı:şifre",
"headers": {
"Content-Type": "application/json"
},
"body": {
"to": "905321112233",
"type": "url",
"link": "https://ornek.com/fatura.pdf"
}
}

Yanıt 200:

{
"status": true,
"data": { "status": true, "data": { "messages": [{ "id": "a1a346d6-10cb-4ca6-a240-86a8e841e79e" }] } }
}

Konum​

{
"method": "POST",
"url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/location",
"auth": "Basic kullanıcı:şifre",
"headers": {
"Content-Type": "application/json"
},
"body": {
"to": "905321112233",
"latitude": "41.04",
"longitude": "29.00",
"name": "Netgsm",
"address": "İstanbul"
}
}

Yanıt 200:

{ "status": true, "data": { "messages": [{ "id": "d302d380-a323-415b-bfe3-56f1471de672" }] } }

Mesaja tepki​

message_id, kişinin size gönderdiği mesajın kimliğidir (mesaj geçmişinde id).

{
"method": "POST",
"url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/replyReaction",
"auth": "Basic kullanıcı:şifre",
"headers": {
"Content-Type": "application/json"
},
"body": {
"to": "905321112233",
"message_id": "wamid.HBgMOTA1MzIxMTEyMjMzFQIAEhggREU5M0Y2N0FFNzMyODVCNjI1QUNBQzY3RjA3OEY4QjM=",
"emoji": "👍"
}
}

Yanıt 200:

{ "status": true, "data": { "messages": [{ "id": "4e9eeab3-64ca-4d55-92ae-1929276525fe" }] } }

Okundu işaretle​

{
"method": "POST",
"url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/markAsRead",
"auth": "Basic kullanıcı:şifre",
"headers": {
"Content-Type": "application/json"
},
"body": {
"message_id": "wamid.HBgMOTA1MzIxMTEyMjMzFQIAEhggREU5M0Y2N0FFNzMyODVCNjI1QUNBQzY3RjA3OEY4QjM="
}
}

Yanıt 200:

{ "status": true, "data": { "success": true } }

İki adımlı doğrulama PIN'i​

POST https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/twoStepVerification. Numaranın WhatsApp iki adımlı doğrulama PIN'ini (6 hane) belirler ya da değiştirir. Her numarada desteklenmez; desteklenmeyen numarada 501 döner.

{
"method": "POST",
"url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/twoStepVerification",
"auth": "Basic kullanıcı:şifre",
"headers": {
"Content-Type": "application/json"
},
"body": {
"pin": "246810"
}
}

Yanıt 200:

{ "status": true, "data": { "success": true } }

Çalışma saatleri ve numarayı kaldırma kurulum ekranından yapılır; bu API'de açık değildir.