mcpField
E
evolution-api

evolution-api

github.com/pedronauckその他644344 回インストール1 週間前に更新
リポジトリ

evolution-api について

Evolution APIは、Baileysまたは公式のWhatsApp Business Cloud APIを通じてアプリケーションとWhatsAppを接続する、オープンソースのNode.js・TypeScript APIです。インスタンス管理、メッセージ送信、チャットやグループ操作、Webhook、イベント配信に対応します。

主な機能

  1. 01BaileysとCloud APIに対応
  2. 02WhatsAppインスタンスのライフサイクル管理
  3. 03テキスト・メディアなどの送信
  4. 04チャットとグループの操作
  5. 05Webhookとイベント配信チャネル

活用シーン

  1. 01アプリケーションからWhatsAppメッセージを送信
  2. 02WhatsAppセッションやグループの管理
  3. 03WhatsAppイベントをバックエンドシステムへ配信

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pedronauck/skills --skill evolution-api

インストール後、Claude Code で/evolution-apiを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
api-endpoints.md
environment-variables.md
events.md

詳細

Evolution API

Baileys(WhatsApp Web)および公式のWhatsApp Business API(Cloud API)に対応した、オープンソースのWhatsApp連携APIです。Node.js + TypeScript + Express.js + Prismaで構築されています。

認証

すべてのリクエストでapikeyヘッダーを使用します。キーには次の2種類があります。

  • グローバルAPIキー:AUTHENTICATION_API_KEY環境変数で設定します。すべてのインスタンスに完全にアクセスできます。
  • インスタンストークン:インスタンスの作成時に返されるインスタンスごとのキーです。そのインスタンスだけにアクセスできます。
apikey: YOUR_API_KEY

すべてのリクエストは次の形式です。

curl --request <METHOD> \
  --url https://<SERVER_URL>/<path>/{instanceName} \
  --header 'Content-Type: application/json' \
  --header 'apikey: <api-key>' \
  --data '<json-body>'

インスタンスのライフサイクル

インスタンスを作成する
POST /instance/create

{
  "instanceName": "my-instance",
  "integration": "WHATSAPP-BAILEYS",
  "token": "optional-custom-token",
  "qrcode": true,
  "number": "5511999999999",
  "rejectCall": true,
  "msgCall": "I can't answer calls",
  "groupsIgnore": true,
  "alwaysOnline": true,
  "readMessages": true,
  "readStatus": true,
  "syncFullHistory": true,
  "webhook": {
    "url": "https://your-server.com/webhook",
    "byEvents": false,
    "base64": true,
    "headers": { "authorization": "Bearer token" },
    "events": ["MESSAGES_UPSERT", "CONNECTION_UPDATE"]
  }
}

レスポンス(201):

{
  "instance": {
    "instanceName": "my-instance",
    "instanceId": "af6c5b7c-ee27-4f94-9ea8-192393746ddd",
    "status": "created"
  },
  "hash": { "apikey": "generated-instance-token" },
  "qrcode": { "base64": "data:image/png;base64,..." }
}

integrationフィールドで指定できる値は次のとおりです。

  • WHATSAPP-BAILEYS — 無料。WhatsApp Web(Baileysライブラリ)をベースとしています。
  • WHATSAPP-BUSINESS — Meta公式のCloud API(Facebook Appのセットアップが必要です)
インスタンスを接続する(QRコードを取得する)
GET /instance/connect/{instanceName}

WhatsAppモバイルアプリでスキャンするためのQRコードをbase64で返します。

接続状態を確認する
GET /instance/connectionState/{instanceName}

open、close、またはconnectingを返します。

その他のインスタンス操作
メソッドエンドポイント説明
GET/instance/fetchInstancesすべてのインスタンスを一覧表示します
PUT/instance/restart/{instance}インスタンスを再起動します
DELETE/instance/logout/{instance}ログアウトします(インスタンスは保持されます)
DELETE/instance/delete/{instance}インスタンスを完全に削除します
POST/instance/setPresence/{instance}オンライン/オフライン状態を設定します

メッセージの送信

テキストメッセージ
POST /message/sendText/{instanceName}

{
  "number": "5511999999999",
  "text": "Hello from Evolution API!",
  "delay": 1200,
  "linkPreview": true,
  "mentionsEveryOne": false,
  "mentioned": ["[email protected]"]
}

レスポンス(201):

{
  "key": {
    "remoteJid": "[email protected]",
    "fromMe": true,
    "id": "BAE594145F4C59B4"
  },
  "message": { "extendedTextMessage": { "text": "Hello from Evolution API!" } },
  "messageTimestamp": "1717689097",
  "status": "PENDING"
}

番号の形式:+記号を付けずに、国際形式の番号を指定します。グループの場合は、グループJID(例:[email protected])を使用します。

メッセージに返信/引用する

送信ペイロードにquotedを追加します。

{
  "number": "5511999999999",
  "text": "This is a reply",
  "quoted": {
    "key": { "id": "ORIGINAL_MESSAGE_ID" },
    "message": { "conversation": "Original message text" }
  }
}
メディアメッセージ
POST /message/sendMedia/{instanceName}

{
  "number": "5511999999999",
  "mediatype": "image",
  "mimetype": "image/png",
  "caption": "Check this out",
  "media": "https://example.com/image.png"
}

mediatypeのオプション:image、video、document。 mediaにはURLまたはbase64エンコードされた文字列を指定できます。

音声メッセージ
POST /message/sendWhatsAppAudio/{instanceName}

{
  "number": "5511999999999",
  "audio": "https://example.com/audio.mp3"
}

音声はWhatsApp PTT(プッシュ・トゥ・トーク)形式に自動変換されます。

その他のメッセージの種類
エンドポイント本文フィールド備考
POST /message/sendLocation/{instance}number、latitude、longitude、name、address
POST /message/sendContact/{instance}number、contact: [{fullName, wuid, phoneNumber}]
POST /message/sendReaction/{instance}key: {remoteJid, fromMe, id}、reaction空文字列を指定すると削除します
POST /message/sendPoll/{instance}number、name、values[]、selectableCount
POST /message/sendList/{instance}number、title、description、buttonText、footerText、sections[]
POST /message/sendButtons/{instance}number、title、description、buttons[]、footer
POST /message/sendSticker/{instance}number、sticker(URLまたはbase64)
POST /message/sendStatus/{instance}type、content、statusJidList[]、captionWhatsAppのステータスに投稿します

Webhookの設定

APIでWebhookを設定する
POST /webhook/set/{instanceName}

{
  "webhook": {
    "enabled": true,
    "url": "https://your-server.com/webhook",
    "webhookByEvents": false,
    "webhookBase64": true,
    "events": [
      "MESSAGES_UPSERT",
      "MESSAGES_UPDATE",
      "CONNECTION_UPDATE",
      "SEND_MESSAGE"
    ]
  }
}

webhookByEventsがtrueの場合、イベントは{url}/{EVENT_NAME}(例:/webhook/MESSAGES_UPSERT)に送信されます。

Webhookの設定を取得する
GET /webhook/find/{instanceName}

利用可能なイベントの一覧については、references/events.mdを参照してください。

チャット操作

MethodEndpointBodyDescription
POST/chat/checkIsWhatsApp/{instance}numbers: ["5511..."]WhatsApp の番号を確認する
POST/chat/findMessages/{instance}where: {key: {remoteJid}}メッセージを検索する
POST/chat/findChats/{instance}{}すべてのチャットを一覧表示する
POST/chat/findContacts/{instance}where: {id}連絡先を検索する
POST/chat/markMessageAsRead/{instance}readMessages: [{remoteJid, id}]既読にする
POST/chat/archiveChat/{instance}chat, archive: trueチャットをアーカイブ/アーカイブ解除する
DELETE/chat/deleteMessageForEveryone/{instance}key: {remoteJid, fromMe, id}全員のチャットから削除する
POST/chat/updateMessage/{instance}number, text, key: {id}送信済みメッセージを編集する
POST/chat/sendPresence/{instance}number, presence入力中/録音中を表示する
POST/chat/getBase64/{instance}message: {key}メディアを Base64 形式で取得する

presence の値:composing、recording、paused。

グループ管理

MethodEndpointBody / ParamsDescription
POST/group/create/{instance}subject, participants[]グループを作成する
GET/group/fetchAllGroups/{instance}query: getParticipants=trueすべてのグループを一覧表示する
GET/group/findGroupInfos/{instance}?groupJid=query paramグループの詳細情報を取得する
GET/group/inviteCode/{instance}?groupJid=query param招待リンクを取得する
GET/group/participants/{instance}?groupJid=query paramメンバーを一覧表示する
POST/group/updateParticipant/{instance}groupJid, action, participants[]追加/削除/昇格/降格する
POST/group/updateSetting/{instance}groupJid, actionグループ設定をロック/解除する
POST/group/toggleEphemeral/{instance}groupJid, expiration消えるメッセージを設定する
DELETE/group/leaveGroup/{instance}groupJidグループから退出する

参加者のaction:add、remove、promote、demote。

プロフィール設定

MethodEndpointDescription
POST/profile/fetchProfile/{instance}プロフィール情報を取得する
POST/profile/updateProfileName/{instance}表示名を更新する
POST/profile/updateProfileStatus/{instance}ステータステキストを更新する
POST/profile/updateProfilePicture/{instance}アバターを更新する
DELETE/profile/removeProfilePicture/{instance}アバターを削除する
GET/profile/fetchPrivacySettings/{instance}プライバシー設定を取得する
POST/profile/updatePrivacySettings/{instance}プライバシー設定を更新する

インテグレーション

Evolution API は、インスタンスごとに設定できるチャットボット連携をサポートしています。

インテグレーションエンドポイントのプレフィックス説明
Typebot/typebot/会話型ボットのフロー
Chatwoot/chatwoot/ヘルプデスク/CRM
OpenAI/openai/AI を活用したボット+音声の文字起こし
Dify/dify/AI エージェントプラットフォーム
n8n/n8n/ワークフローの自動化
Flowise/flowise/LLM フロービルダー
EvoAI/evoai/Evolution 独自の AI ボット

各インテグレーションは CRUD パターンに従います:create、find、update、delete、settings、change-status、fetch-session。

イベント配信チャネル

Evolution API は、Webhook に加えて、次の方法でもイベントを配信できます。

  • RabbitMQ — POST /rabbitmq/set/{instance}
  • Amazon SQS — POST /sqs/set/{instance}
  • WebSocket(Socket.io) — POST /websocket/set/{instance}
  • Apache Kafka — 環境変数を使用

詳細なリファレンス

コメント