開発者向け WhatsApp API — 構築、リリース、スケール

開発者ファーストの WhatsApp API — クリーンな REST エンドポイント、Webhook、6 言語のコードサンプル、プロジェクトに合わせて拡張できるインフラストラクチャ。

最初の API 呼び出し

const response = await fetch('https://api2whats.com/send-text', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    to: '971501234567',
    message: 'Hello from my app!'
  })
});
const data = await response.json();
console.log(data.id); // message ID

開発者がこの API を選ぶ理由

ほとんどの WhatsApp API ソリューションは、最初に非技術ユーザー向け、次に開発者向けに設計されています。ドキュメントは乏しく、エラーメッセージは役に立たず、API と格闘する時間が構築する時間を上回ります。私たちはこの API を逆の順序で構築しました — 開発者ファースト、その他すべては後回しです。

すべてのエンドポイントは明確なエラーメッセージ付きの構造化 JSON を返します。すべてのリクエストには予測可能なレスポンス形式があります。ドキュメントにはコピーしてすぐに実行できる実用的なコードサンプルが含まれています。また webhook システムは署名付きペイロードで着信メッセージをリアルタイムにサーバーへ配信するため、信頼性を検証できます。

カスタマーサポートのチャットボット、注文通知システム、マーケティング自動化ツール、クライアント向けのカスタム統合のいずれを構築していても、API は邪魔をせず、あなたがコードに集中できるようにします。

アーキテクチャ概要

API はあなたのアプリケーションと WhatsApp のサーバーの間に位置します。メッセージを送信すると次のことが起こります:

  1. アプリケーションが API エンドポイントに HTTP POST リクエストを送信
  2. API が Authorization ヘッダーの API キーでリクエストを認証
  3. メッセージが正しい WhatsApp インスタンスにルーティングされる (複数ある場合)
  4. メッセージが持続的な WebSocket 接続で WhatsApp に配信
  5. メッセージ ID と配信ステータスを含むレスポンスを受信
  6. 後続のステータス更新 (配信済み、既読) があなたの webhook にプッシュ

全体のラウンドトリップは通常 50 ミリ秒未満です。ブラウザも、スクリーンショット処理も、DOM 操作もありません。WebSocket 接続は持続的で、再接続、認証の更新、エラー回復を自動的に処理します。

REST API リファレンス

すべてのエンドポイントは REST 規約に従います。リクエストは JSON ボディを使用します。レスポンスも JSON です。認証は Authorization ヘッダーの Bearer トークンで行います。

メッセージの送信

メソッドエンドポイント説明
POST/send-textテキストメッセージの送信
POST/send-image画像の送信 (URL または Base64)
POST/send-video動画の送信
POST/send-documentドキュメントまたはファイルの送信
POST/send-audio音声ファイルの送信
POST/send-location位置情報の送信
POST/send-stickerステッカーの送信

インスタンスの管理

メソッドエンドポイント説明
GET/instance/status接続ステータスの確認
POST/instance/connect接続用 QR コードの取得
POST/instance/pairing-codeペアリングコードの取得
POST/instance/disconnectインスタンスの切断

Webhook

メソッドエンドポイント説明
POST/set-webhookwebhook URL の設定
GET/get-webhook現在の webhook URL の取得

Webhook 統合

Webhook は着信メッセージを受信するための仕組みです。誰かが接続した WhatsApp 番号にメッセージを送信すると、API はメッセージデータを含む POST リクエストをあなたの webhook URL に送信します。

webhook ペイロードは次のようになります:

{
  "event": "message",
  "instance": "instance_abc123",
  "data": {
    "id": "3EB0A1B2C3D4E5F6",
    "from": "971501234567",
    "message": "Hi, I need help with my order",
    "timestamp": 1691234567,
    "type": "text"
  }
}

webhook ハンドラはこのデータを処理し、任意の自動応答をトリガーできます。webhook システムは再試行ロジックをサポートします — サーバーが一時的に利用できない場合、API は諦める前に配信を複数回再試行します。

セキュリティのため、すべての webhook ペイロードには X-Signature ヘッダーが含まれます。これを検証することで、リクエストが実際に当社 API からのものであり第三者ではないことを確認できます。

6 言語のコードサンプル

一般的な操作ごとに、動作するコードサンプルを提供しています。各サンプルは完全で実行可能なスクリプトです — インポート、エラーハンドリング、設定を推測させられる断片ではありません。

PHP

<?php
$ch = curl_init('https://api2whats.com/send-text');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ***',
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'to' => '971501234567',
        'message' => 'Hello from PHP!',
    ]),
    CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

Python

import requests

response = requests.post(
    'https://api2whats.com/send-text',
    headers={
        'Authorization': 'Bearer YOUR_API_KEY',
        'Content-Type': 'application/json',
    },
    json={
        'to': '971501234567',
        'message': 'Hello from Python!',
    }
)
print(response.json())

JavaScript (Node.js)

const response = await fetch('https://api2whats.com/send-text', {
    method: 'POST',
    headers: {
        'Authorization': 'Bearer YOUR_API_KEY',
        'Content-Type': 'application/json',
    },
    body: JSON.stringify({
        to: '971501234567',
        message: 'Hello from Node.js!',
    }),
});
const data = await response.json();
console.log(data);

エラーハンドリング

API は標準の HTTP ステータスコードを使用し、構造化されたエラーレスポンスを返します:

{
    "success": false,
    "error": {
        "code": "INSTANCE_DISCONNECTED",
        "message": "The WhatsApp instance is not connected"
    }
}

一般的なエラーコードは次のとおり:

  • 401 Unauthorized — API キーが無効または欠落している
  • 400 Bad Request — 必須フィールドの欠落または無効なデータ
  • 404 Not Found — インスタンスまたはリソースが存在しない
  • 429 Too Many Requests — レート制限を超過
  • 500 Internal Server Error — 当社側で問題が発生 (稀)

Webhook セキュリティ

すべての webhook リクエストには、リクエストボディの HMAC-SHA256 署名を含む X-Signature ヘッダーが含まれます。webhook ハンドラはこの署名を検証して、リクエストが実際に当社 API からのものであることを確認してください。

// Node.js webhook signature verification
const crypto = require('crypto');

function verifySignature(payload, signature, secret) {
    const expected = crypto
        .createHmac('sha256', secret)
        .update(payload)
        .digest('hex');
    return crypto.timingSafeEqual(
        Buffer.from(signature),
        Buffer.from(expected)
    );
}

app.post('/webhook', (req, res) => {
    const sig = req.headers['x-signature'];
    const body = JSON.stringify(req.body);

    if (!verifySignature(body, sig, WEBHOOK_SECRET)) {
        return res.status(401).json({ error: 'Invalid signature' });
    }

    // Process the message...
    res.json({ success: true });
});

テストとデバッグ

API は統合をテストおよびデバッグするためのいくつかのツールを提供します:

  • ダッシュボードのログ — ダッシュボードからすべての API リクエストとそのレスポンスをリアルタイムで表示
  • Webhook テストエンドポイント — テスト webhook を送信してハンドラが正しく動作するか確認
  • メッセージステータスの追跡 — ID で任意のメッセージのステータスを照会
  • エラー率の監視 — ダッシュボードで API エラー率の推移を追跡

個人の番号に接続したテストインスタンスから始めることをお勧めします。本番トラフィックの前に、テストメッセージを送信し、webhook を検証し、エラーハンドリングを確認してください。

開発者のベストプラクティス

  • API キーを安全に保管 — ハードコードされた文字列ではなく環境変数を使用。API キーをバージョン管理にコミットしないこと。
  • エラーを適切に処理 — 一時的なエラー (5xx、ネットワークタイムアウト) には指数バックオフ付きの再試行ロジックを実装。
  • webhook 署名を検証 — 検証されていない webhook リクエストを決して信頼しない。常に X-Signature ヘッダーを確認。
  • 接続プールを使用 — API 呼び出しのたびに新しい接続を作成せず、リクエスト間で HTTP 接続を再利用。
  • レート制限を監視 — X-RateLimit-Remaining ヘッダーを確認し、制限に近づいたら事前にスロットリングを実施。
  • すべてをログ記録 — デバッグ用にリクエスト/レスポンスのペアを記録。本番ログでは機密データ (電話番号、メッセージ内容) をマスク。

レート制限

レート制限は API キーごとに適用され、プランによって異なります。制限に達すると、API は Retry-After ヘッダー付きの 429 ステータスコードを返します。デフォルトは次のとおり:

  • ベーシックプラン — 毎分 100 リクエスト
  • プロフェッショナルプラン — 毎分 300 リクエスト
  • エンタープライズプラン — 毎分 1000 リクエスト

レート制限に頻繁に達する場合は、プランのアップグレード、または可能な箇所でのバッチ処理を検討してください。

Webhook ペイロード形式

着信メッセージはメッセージタイプに応じてさまざまな形式で届きます:

テキストメッセージ

{
  "event": "message",
  "data": {
    "id": "3EB0A1B2C3D4E5F6",
    "from": "971501234567",
    "message": "Hello!",
    "type": "text",
    "timestamp": 1691234567
  }
}

画像メッセージ

{
  "event": "message",
  "data": {
    "id": "3EB0A1B2C3D4E5F7",
    "from": "971501234567",
    "type": "image",
    "caption": "Check this out!",
    "mediaUrl": "https://api2whats.com/media/...",
    "mimeType": "image/jpeg",
    "timestamp": 1691234568
  }
}

ステータス更新

{
  "event": "status",
  "data": {
    "id": "3EB0A1B2C3D4E5F6",
    "status": "delivered",
    "timestamp": 1691234600
  }
}

ステータス値には次のものがあります: sent (WhatsApp に送信)、delivered (デバイスに到達)、read (受信者が開封)。

はじめに

  1. アカウントを作成 (無料、クレジットカード不要)
  2. からプランを選択料金ページ
  3. あなたの ダッシュボード
  4. QR コードまたはペアリングコードで電話番号を接続
  5. 完全な API ドキュメント
  6. 最初のメッセージを送信して構築を開始

コミュニティとサポート

開発者コミュニティに参加して、ヘルプを得たり、統合を共有したり、新機能の情報を入手したりできます。私たちはあらゆる業界で WhatsApp 統合を構築している活発な開発者コミュニティを擁しています。

  • ドキュメント — 動作する例付きの包括的な API リファレンス
  • コードサンプル — PHP、Python、JavaScript、cURL の完全な実行可能スクリプト
  • メールサポート — すべてのプラン層で 24 時間以内の応答
  • ダッシュボードのログ — API リクエストと webhook 配信のリアルタイム可視化
  • ステータスページ — システムの稼働状況とインシデント履歴

最初の WhatsApp 統合を構築している場合も、既存の統合をスケールしている場合も、当社のリソースとサポートチームが成功を支援します。

今すぐ構築を始める

クリーンな API、本物のドキュメント、実際に動作するコードサンプル。WhatsApp 統合を数週間ではなく数時間でリリース。