コンテンツへスキップ
Wbiztool

メッセージングAPI

WhatsAppメッセージの予約API

WhatsAppのテキスト、画像、ドキュメントを、指定した日時に電話番号またはグループへ送信するよう予約します。予約のリマインダー、誕生日のお祝い、フォローアップ、期間限定のご案内などに利用できます。

POSThttps://wbiztool.com/api/v1/schedule_msg/

リクエストボディ: JSONまたはフォームフィールド

メッセージは予約した時刻までキューで待機し、その後あなたのWhatsApp番号から送信されます。レスポンスにはmsg_idが含まれ、これを使ってステータスを確認したり、キャンセルしたりできます。

クイック例#

curl -X POST https://wbiztool.com/api/v1/schedule_msg/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "msg_type": 0,
    "country_code": "91",
    "phone": "9876543210",
    "msg": "Hi Aman, a reminder that your appointment is today at 11:30 AM.",
    "date": "24/12/2026",
    "time": "09:00",
    "timezone": "Asia/Kolkata"
  }'

12345YOUR_API_KEY678はご自身の値に置き換えてください。値の確認場所は認証をご覧ください。

リクエストパラメータ#

認証

client_idinteger必須

設定 → APIキーに表示されるAPIクライアントIDです。

api_keystring必須

同じページにあるAPIキーです。

whatsapp_clientinteger必須

送信に使うWhatsApp番号のIDです。WhatsApp設定で確認できます。メッセージ送信APIとは異なり、このエンドポイントが番号を自動で選ぶことはありません。

スケジュール

datestring必須

メッセージを送信する日付で、dd/mm/yyyy形式です(例:24/12/2026)。

timestring必須

メッセージを送信する時刻で、24時間制のHH:MM形式です(例:09:0018:45)。秒は含めないでください。

timezonestring任意

datetimeのタイムゾーンです。省略した場合のデフォルトはIST(インド)です。タイムゾーンを参照してください。

受信者とメッセージ

phonestringgroup_nameを送信しない場合は必須

受信者のWhatsApp番号で、数字のみです。スペース、+-.、括弧は自動的に削除されます。番号は国コード付き919876543210)で送信するか、国コードなし9876543210)でcountry_codeと一緒に送信してください。

group_namestringphoneを送信しない場合は必須

あなたの番号がメンバーになっているWhatsAppグループの名前です。グループに送信と同じ方法で検索されます。phonegroup_nameはどちらか一方だけを送信し、両方は送らないでください。

country_codestring任意

+を除いた国番号です。例:インドは91、米国は1。番号がすでにこの国番号で始まっていない限り、phoneの先頭に付加されます。例外として、91の場合、10桁の番号には常に国番号が付加されます。その他の国番号では、国番号と同じ数字で始まる国内番号は国番号を含めて送信してください。グループの場合は無視されます。

msg_typeinteger任意

0テキスト(デフォルト)、1画像、2ファイルまたはドキュメント。

msgstringmsg_typeが0の場合は必須

メッセージ本文です。画像やファイルの場合はキャプションになり、空でもかまいません。WhatsAppの書式(*bold*_italic_~strikethrough~)が使えます。エイリアスとしてmessageも受け付けます。

画像とファイル

img_urlstringmsg_typeが1の場合は必須

画像の公開httpまたはhttps URLです。

file_urlstringmsg_typeが2の場合は必須

ファイルを直接ダウンロードできる公開httpまたはhttps URLです。

file_namestring任意

受信者に表示されるファイル名です(例:invoice-4821.pdf)。小文字で送信され、& : ? * $ ;などの文字は_に置き換えられ、150文字に切り詰められます。省略した場合は、URLから名前が取得されます。

配信オプション

webhookstring任意

メッセージが送信されたとき、または失敗したときにPOSTを受け取るURLです。ペイロードはメッセージ送信と同じです。

メッセージが送信されるタイミング#

  • Wbiztoolはdatetimetimezoneを1つの時点に変換し、その時点を過ぎるとメッセージを送信します(WhatsApp番号が接続されている場合)。
  • 過去の時刻も受け付けられます。その場合、通常の送信と同様にメッセージはすぐに送信されます。何か月も早くメッセージを送ってしまわないよう、日付の形式(dd/mm/yyyy、日が先)をよく確認してください。
  • 予約時刻に番号の接続が切れている場合、メッセージは待機し、予定より大幅に遅くなっても、番号が再接続され次第送信されます。このエンドポイントには有効期限がないため、不要になったメッセージはキャンセルしてください。切断または削除された番号で、予約時刻から90日経っても待機しているメッセージは削除されます。
  • 送信されるまで、メッセージのステータスは0(Created)で、キャンセルできます。待機中も残りクレジットから差し引かれます。

タイムゾーン#

timezoneには、タイムゾーン名または下記の略称のいずれかを指定できます。

タイムゾーン名Asia/KolkataAmerica/New_YorkEurope/LondonAustralia/Sydneyなど。IANAタイムゾーンデータベースの名前であれば、どれでも使用できます。最も確実な方法です。一覧はタイムゾーンリファレンスをご覧ください。

略称は大文字で指定する必要があります。各略称は地域に対応しており、その地域の夏時間が自動的に適用されます。

略称解釈される値
ISTAsia/Kolkata
UTCUTC
GMTGMT
ESTUS/Eastern
CSTUS/Central
MSTUS/Mountain
PSTUS/Pacific
CETCESTEurope/Paris
EETEESTEurope/Athens
JSTAsia/Tokyo
AESTAEDTAustralia/Sydney

たとえば、7月のESTは固定のUTC−5ではなく、ニューヨークの夏時間(UTC−4)を意味します。

グループへの予約送信#

curl -X POST https://wbiztool.com/api/v1/schedule_msg/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "msg_type": 0,
    "group_name": "Sales Team Mumbai",
    "msg": "Team meeting starts in 15 minutes.",
    "date": "24/12/2026",
    "time": "14:45",
    "timezone": "Asia/Kolkata"
  }'

レスポンス#

リクエストが成功すると、HTTP 200が返ります。

{
  "msg_id": 9817263,
  "message": "Created",
  "status": 1
}
フィールド説明
statusintegerメッセージが予約された場合は1、リクエストが失敗した場合は0
messagestring成功時はCreated、それ以外はエラー内容。
msg_idinteger予約されたメッセージのID。後でステータスの確認やキャンセルに使うため保存してください。成功時のみ含まれます。

レスポンスには予約した時刻やタイムゾーンは含まれないため、送信した内容を記録しておいてください。

エラー#

ほとんどのエラーはHTTP 200で返り、status0になります。必ずボディのstatusを確認してください。

{ "message": "Scheduled date & time is not in valid format", "status": 0 }
メッセージ対処方法
Auth Errorclient_idapi_keyの両方を送信してください。
Invalid Client Idclient_idを数値で送信してください。HTTP 403で返ります。
Auth Error: invalid api keyキーが存在し、削除されておらず、このclient_idに属していることを確認してください。HTTP 400で返ります。
Either phone or group_name parameter is requiredphoneまたはgroup_nameを追加してください。
Please provide either phone OR group_name, not bothどちらか一方を削除してください。
Invalid phone numberphoneは数字のみ(6〜17桁)で、先頭に+を付けることもできます。
Invalid Contact Number "…"国コードを付加した番号が6〜15桁である必要があります。
Msg cant be nullテキストメッセージ(msg_type 0)にはmsgが必要です。
Image Url Can't be nullmsg_type 1の場合はimg_urlを送信してください。
File Url Can't be nullmsg_type 2の場合はfile_urlを送信してください。
Scheduled date & time is not in valid formatdateまたはtimeがないか、timezoneが空文字列です。
Not enough creditsプランの残りメッセージ数がありません。
Demo Account can not access apis通常のアカウントを使用してください。
Invalid JSON format: …JSONボディが無効か、client_idなしでフォームフィールドを送信しています。

ヒント#

  • 日付は慎重に組み立てる:Pythonではstrftime("%d/%m/%Y")strftime("%H:%M")を使用してください。JavaScriptでは、サーバーのローカル時刻ではなく、timezoneで送信するのと同じタイムゾーンで日付と時刻をフォーマットしてください。

    const tz = "Asia/Kolkata"; // d is the Date to send at
    const date = new Intl.DateTimeFormat("en-GB", { timeZone: tz, day: "2-digit", month: "2-digit", year: "numeric" }).format(d); // "24/12/2026"
    const time = new Intl.DateTimeFormat("en-GB", { timeZone: tz, hour: "2-digit", minute: "2-digit", hourCycle: "h23" }).format(d); // "09:00"
  • 時刻を確認する:5分後にテストメッセージを予約し、想定どおりの時刻に届くか確認してください。

  • 予定の変更:予約し直すには、メッセージをキャンセルして新しく予約してください。

  • 現時点では公式クライアントで予約しないでください:Pythonのschedule_messageは日付をYYYY-MM-DDで送信し(レスポンスは{})、NodeのscheduleMessageはこのエンドポイントが読み取らないschedule_timeを送信します。上記のようにエンドポイントを直接呼び出してください。

  • 繰り返し送信するメッセージ:毎月の支払いリマインダーなど繰り返し送るメッセージについては、リマインダーの作成をご覧ください。