What's new, 21 October 2026: A customer who sends several messages before the bot's first reply no longer gets the opening sequence of a Chat Flow twice
WASync · Developers

İlk mesajınız

Bir WhatsApp metni gönderin, konuşmayı geri okuyun ve müşteriye mavi tikleri verin.

Metin gönderme

POST /messages
curl -X POST https://developers.wasync.app/api/v1/messages \
  -H "Authorization: Bearer $WASYNC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"connectionId":"conn_8f3a21","to":"40700000000","text":"Hi from my app 👋"}'
200 response
{
  "messageId": "cmqj3k2ab0001xyz",
  "waMessageId": "[email protected]_3EB0A1B2C3",
  "status": "sent"
}

to yalnızca uluslararası formatta rakamlardan oluşur, + işareti olmaz; örneğin 40700000000. text en fazla 4096 karakter olabilir. Medya göndermek için text yerine media verin: { filename, mimetype, data (base64, ≤ 16 MB), caption? }. İkisinden yalnızca biri kullanılmalıdır. Sesli mesajlarda mimetype: audio/ogg ve voice-*.ogg biçiminde bir dosya adı kullanılır. whatsapp.send kullanır.

HTTP zaman aşımınızı en az 180 saniyeye ayarlayın

Bir qr gönderimi normalde 1–7 sn sürer, uzun metinlerde yaklaşık 20 sn'ye kadar çıkabilir; kendi kendini onarma yolu ise yaklaşık 2,5 dakika sürebilir. Bir cloud_api gönderimi yaklaşık 1 sn sürer. Yavaş bir gönderim başarısızlık değildir. 30. saniyede vazgeçip yeniden deneyen bir istemci, müşteriye mesajı iki kez gönderir. Her zaman bir idempotencyKey (her mantıksal gönderim için bir UUID) iletin ve yeniden denemeyi aynı anahtarla yapın.

İki kimlik: doğru olanla eşleştirin

Yanıt iki tanımlayıcı içerir ve bunlar birbirinin yerine kullanılamaz.

KimlikNerede görünürNe için kullanılır
messageId (bir cuid)POST'ta messageId, GET'te id, her iki webhook'ta message.idEşleştirmede kullanılabilecek tek kimlik. Gönderirken saklayın, tekrarları bununla ayıklayın, message.status olaylarını bununla eşleştirin.
waMessageIdwaMessageId (REST), wa_id (webhook'lar), wa_message_id (medya gönderimi)Destek talepleri ve hata ayıklama için. null olabilir; eşleştirme veya tekrar ayıklama için asla kullanmayın.

Kodunuzda ele almaya değer bir bozulmuş durum vardır: HTTP 200 ile gelen { "messageId": null, "waMessageId": "…", "status": …, "persisted": false } yanıtı, mesajın iletildiği ancak kaydedilmediği anlamına gelir. Yeniden denemeyin.

Konuşmayı geri okuma

GET /messages
curl "https://developers.wasync.app/api/v1/messages?connectionId=conn_8f3a21&limit=20" \
  -H "Authorization: Bearer $WASYNC_API_KEY"
200 response
{
  "messages": [
    {
      "id": "cmqj3k2ab0001xyz",
      "waMessageId": "[email protected]_3EB0A1B2C3",
      "connectionId": "conn_8f3a21",
      "direction": "outgoing",
      "text": "Hi from my app 👋",
      "mediaUrl": null,
      "mediaType": null,
      "status": "delivered",
      "errorMessage": null,
      "createdAt": "2026-07-22T10:00:00.000Z"
    }
  ],
  "nextCursor": "cmqj3k2ab0001xyz",
  "hasMore": true
}

En yeni mesaj başta olacak şekilde, imleç (cursor) tabanlı sayfalama kullanılır: limit 1–100 arasındadır (varsayılan 20) ve cursor, önceki yanıttaki nextCursor değerini alır. whatsapp.read kullanır.

Müşteriye mavi tikleri verin

POST /messages/read
curl -X POST https://developers.wasync.app/api/v1/messages/read \
  -H "Authorization: Bearer $WASYNC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"connectionId":"conn_8f3a21","phone":"40700000000"}'

Bir operatör konuşmayı sizin arayüzünüzde açtığında bunu çağırın. Aksi halde sohbeti WhatsApp'ta kimse açmaz, müşterinin mesajları çift gri tikte kalır ve konuşma yok sayılmış gibi görünür. Gövde { connectionId, phone?, messageId? } biçimindedir ve phone / messageId alanlarından en az biri bulunmalıdır (messageId, gelen bir mesajın cuid'idir; ikisi birlikte verilirse messageId önceliklidir). Müşteriye bir okundu bilgisi ilettiği için whatsapp.read değil, whatsapp.send kullanır. Idempotent'tir, anahtar gerektirmez, hız sınırı yoktur. { "ok": true, "marked": 3 } döndürür.

Sonraki adımlar

  • Yoklama yapmak yerine gelen mesajlardan haberdar olun: Webhooks.
  • Kod yazmadan oluşturun: n8n veya MCP.
  • Sözleşmeden bir istemci üretin: npx @openapitools/openapi-generator-cli generate -i https://developers.wasync.app/openapi.json -g typescript-fetch -o ./wasync-client
Bu sayfa yardımcı oldu mu?

On this page