# Send Evolution Api Go - Evo Go to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "evogo",
    "name": "Evolution Api Go - Evo Go",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/impa365/evogo",
    "canonicalUrl": "https://clawhub.ai/impa365/evogo",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/evogo",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=evogo",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "evogo",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-03T00:46:51.193Z",
      "expiresAt": "2026-05-10T00:46:51.193Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=evogo",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=evogo",
        "contentDisposition": "attachment; filename=\"evogo-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "evogo"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/evogo"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/evogo",
    "downloadUrl": "https://openagent3.xyz/downloads/evogo",
    "agentUrl": "https://openagent3.xyz/skills/evogo/agent",
    "manifestUrl": "https://openagent3.xyz/skills/evogo/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/evogo/agent.md"
  }
}
```
## Documentation

### evoGo - Evolution API Go v3

Complete WhatsApp automation via Evolution API Go v3. Send messages, manage groups, automate conversations, and integrate webhooks.

### 1. Set Environment Variables

{
  env: {
    EVOGO_API_URL: "http://localhost:8080",        // Your API URL
    EVOGO_GLOBAL_KEY: "your-global-admin-key",     // Admin key (instance mgmt)
    EVOGO_INSTANCE: "my-bot",                      // Instance name
    EVOGO_API_KEY: "your-instance-token"           // Instance token (messaging)
  }
}

### 2. Create Instance & Connect

# Create instance
curl -X POST "$EVOGO_API_URL/instance/create" \\
  -H "apikey: $EVOGO_GLOBAL_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{
    "name": "my-bot",
    "token": "my-secret-token",
    "qrcode": true
  }'

# Connect & get QR code
curl -X POST "$EVOGO_API_URL/instance/connect" \\
  -H "apikey: $EVOGO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"number": ""}'

Scan the QR code returned in qrcode.base64.

### 3. Send First Message

curl -X POST "$EVOGO_API_URL/send/text" \\
  -H "apikey: $EVOGO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{
    "number": "5511999999999",
    "text": "Hello from evoGo! 🚀"
  }'

### 🔐 Authentication

Two authentication levels:

TypeHeaderUsageGlobal API Keyapikey: xxxAdmin: create/delete instances, logsInstance Tokenapikey: xxxMessaging: send messages, groups, contacts

Set via environment or pass directly in headers.

### Phone Number Formats

ContextFormatExampleSending messagesInternational (no +)5511999999999Group participantsJID format5511999999999@s.whatsapp.netGroupsGroup JID120363123456789012@g.usNewslettersNewsletter JID120363123456789012@newsletter

### Message Delay

Add delay (milliseconds) to avoid rate limits:

{
  "number": "5511999999999",
  "text": "Message with delay",
  "delay": 2000
}

### 📱 Instance Management

Create Instance

POST /instance/create
Header: apikey: $EVOGO_GLOBAL_KEY

{
  "name": "bot-name",
  "token": "secret-token",
  "qrcode": true,
  "advancedSettings": {
    "rejectCalls": false,
    "groupsIgnore": false,
    "alwaysOnline": true,
    "readMessages": true,
    "readStatus": true,
    "syncFullHistory": true
  }
}

Advanced Settings:

rejectCalls - Auto-reject calls
groupsIgnore - Ignore group messages
alwaysOnline - Stay online always
readMessages - Auto-mark messages as read
readStatus - Auto-mark status as viewed
syncFullHistory - Sync full chat history

Connect / Get QR Code

POST /instance/connect
GET  /instance/qr
Header: apikey: $EVOGO_API_KEY

{"number": ""}  # Leave empty for QR, or phone number for pairing

Connection Status

GET /instance/status
Header: apikey: $EVOGO_API_KEY

Returns: connected, connecting, disconnected

List All Instances

GET /instance/all
Header: apikey: $EVOGO_GLOBAL_KEY

Delete Instance

DELETE /instance/delete/{instance}
Header: apikey: $EVOGO_GLOBAL_KEY

Force Reconnect

POST /instance/forcereconnect/{instance}
Header: apikey: $EVOGO_GLOBAL_KEY

{"number": "5511999999999"}

Logs

GET /instance/logs/{instance}?start_date=2026-01-01&end_date=2026-02-10&level=info&limit=100
Header: apikey: $EVOGO_GLOBAL_KEY

Log levels: info, warn, error, debug

### 💬 Send Messages

Text Message

POST /send/text

{
  "number": "5511999999999",
  "text": "Hello World!",
  "delay": 1000,
  "mentionsEveryOne": false,
  "mentioned": ["5511888888888@s.whatsapp.net"]
}

Media (URL)

POST /send/media

{
  "number": "5511999999999",
  "url": "https://example.com/photo.jpg",
  "type": "image",
  "caption": "Check this out!",
  "filename": "photo.jpg"
}

Media types:

image - JPG, PNG, GIF, WEBP
video - MP4, AVI, MOV, MKV
audio - MP3, OGG, WAV (sent as voice note/PTT)
document - PDF, DOC, DOCX, XLS, XLSX, PPT, TXT, ZIP
ptv - Round video (Instagram-style)

Media (File Upload)

POST /send/media
Content-Type: multipart/form-data

number=5511999999999
type=image
file=@/path/to/file.jpg
caption=Photo caption
filename=custom-name.jpg

Poll

POST /send/poll

{
  "number": "5511999999999",
  "question": "Best language?",
  "options": ["JavaScript", "Python", "Go", "Rust"],
  "selectableCount": 1
}

Get poll results:

GET /polls/{messageId}/results

Sticker

POST /send/sticker

{
  "number": "5511999999999",
  "sticker": "https://example.com/sticker.webp"
}

Auto-converts images to WebP format.

Location

POST /send/location

{
  "number": "5511999999999",
  "latitude": -23.550520,
  "longitude": -46.633308,
  "name": "Avenida Paulista",
  "address": "Av. Paulista, São Paulo - SP"
}

Contact

POST /send/contact

{
  "number": "5511999999999",
  "vcard": {
    "fullName": "João Silva",
    "phone": "5511988888888",
    "organization": "Company XYZ",
    "email": "joao@example.com"
  }
}

Carousel

POST /send/carousel

{
  "number": "5511999999999",
  "body": "Main carousel text",
  "footer": "Footer text",
  "cards": [
    {
      "header": {
        "title": "Card 1",
        "subtitle": "Subtitle",
        "imageUrl": "https://example.com/img1.jpg"
      },
      "body": {"text": "Card description"},
      "footer": "Card footer",
      "buttons": [
        {
          "displayText": "Click Me",
          "id": "btn1",
          "type": "REPLY"
        }
      ]
    }
  ]
}

Button types:

REPLY - Simple reply
URL - Opens link
CALL - Initiates call
COPY - Copies text

### 📨 Message Operations

React to Message

POST /message/react

{
  "number": "5511999999999",
  "reaction": "👍",
  "id": "MESSAGE_ID",
  "fromMe": false,
  "participant": "5511888888888@s.whatsapp.net"  # Required in groups
}

Reactions: 👍, ❤️, 😂, 😮, 😢, 🙏, or "remove"

Typing/Recording Indicator

POST /message/presence

{
  "number": "5511999999999",
  "state": "composing",
  "isAudio": false
}

States:

composing + isAudio: false → "typing..."
composing + isAudio: true → "recording audio..."
paused → Stops indicator

Mark as Read

POST /message/markread

{
  "number": "5511999999999",
  "id": ["MESSAGE_ID_1", "MESSAGE_ID_2"]
}

Download Media

POST /message/downloadmedia

{
  "message": {}  # Full message object from webhook
}

Returns base64-encoded media.

Edit Message

POST /message/edit

{
  "chat": "5511999999999@s.whatsapp.net",
  "messageId": "MESSAGE_ID",
  "message": "Edited text"
}

Limitations:

Text messages only
Your messages only
~15 minute time limit

Delete Message

POST /message/delete

{
  "chat": "5511999999999@s.whatsapp.net",
  "messageId": "MESSAGE_ID"
}

Limitations:

Your messages only
~48 hour time limit

Get Message Status

POST /message/status

{
  "id": "MESSAGE_ID"
}

Returns delivery/read status.

### 👥 Group Management

List Groups

GET /group/list        # Basic info (JID + name)
GET /group/myall       # Full info (participants, settings, etc)

Get Group Info

POST /group/info

{
  "groupJid": "120363123456789012@g.us"
}

Create Group

POST /group/create

{
  "groupName": "My Team",
  "participants": [
    "5511999999999@s.whatsapp.net",
    "5511888888888@s.whatsapp.net"
  ]
}

Requirements:

Name: max 25 characters
Participants: minimum 1

Manage Participants

POST /group/participant

{
  "groupJid": "120363123456789012@g.us",
  "action": "add",
  "participants": ["5511999999999@s.whatsapp.net"]
}

Actions:

add - Add members
remove - Remove members
promote - Make admin
demote - Remove admin

Update Group Settings

POST /group/settings

{
  "groupJid": "120363123456789012@g.us",
  "action": "announcement"
}

Settings:

announcement / not_announcement - Only admins send messages
locked / unlocked - Only admins edit group info
approval_on / approval_off - Require approval to join
admin_add / all_member_add - Who can add members

Get Invite Link

POST /group/invitelink

{
  "groupJid": "120363123456789012@g.us",
  "reset": false
}

Set reset: true to revoke old link and generate new one.

Join Group

POST /group/join

{
  "code": "https://chat.whatsapp.com/XXXXXX"
}

Accepts full link or just the code.

Leave Group

POST /group/leave

{
  "groupJid": "120363123456789012@g.us"
}

Manage Join Requests

# Get pending requests
POST /group/requests
{
  "groupJid": "120363123456789012@g.us"
}

# Approve/Reject
POST /group/requests/action
{
  "groupJid": "120363123456789012@g.us",
  "action": "approve",
  "participants": ["5511999999999@s.whatsapp.net"]
}

Actions: approve, reject

Update Group Metadata

# Set photo
POST /group/photo
{
  "groupJid": "120363123456789012@g.us",
  "image": "https://example.com/photo.jpg"
}

# Set name
POST /group/name
{
  "groupJid": "120363123456789012@g.us",
  "name": "New Group Name"
}

# Set description
POST /group/description
{
  "groupJid": "120363123456789012@g.us",
  "description": "New description"
}

### 💬 Chat Management

Pin/Unpin Chat

POST /chat/pin
POST /chat/unpin

{
  "chat": "5511999999999@s.whatsapp.net"
}

Archive/Unarchive Chat

POST /chat/archive
POST /chat/unarchive

{
  "chat": "5511999999999@s.whatsapp.net"
}

Mute/Unmute Chat

POST /chat/mute
POST /chat/unmute

{
  "chat": "5511999999999@s.whatsapp.net"
}

Sync History

POST /chat/history-sync-request

Requests full chat history sync (may take time).

### 👤 User & Profile

Get User Info

POST /user/info

{
  "number": ["5511999999999", "5511888888888"],
  "formatJid": true
}

Returns: status, profile photo, verified badge, linked devices, etc.

Check WhatsApp Registration

POST /user/check

{
  "number": ["5511999999999", "5511888888888"]
}

Returns: isInWhatsapp (true/false) for each number.

Get Profile Picture

POST /user/avatar

{
  "number": "5511999999999",
  "preview": false
}

Preview options:

false - Full resolution
true - Low resolution preview

Get Contacts

GET /user/contacts

Lists all saved contacts.

Privacy Settings

# Get privacy settings
GET /user/privacy

# Set privacy settings
POST /user/privacy
{
  "groupAdd": "all",
  "lastSeen": "contacts",
  "status": "all",
  "profile": "all",
  "readReceipts": "all",
  "callAdd": "all",
  "online": "match_last_seen"
}

Options: all, contacts, contact_blacklist, none, match_last_seen (online only)

Block/Unblock Contact

POST /user/block
POST /user/unblock

{
  "number": "5511999999999"
}

# Get block list
GET /user/blocklist

Update Profile

# Set profile picture
POST /user/profilePicture
{
  "image": "https://example.com/photo.jpg"
}

# Set profile name
POST /user/profileName
{
  "name": "My Name"
}

# Set status/about
POST /user/profileStatus
{
  "status": "My custom status"
}

Limits:

Name: 25 characters max
Status: 139 characters max

### 🏷️ Labels (Tags)

Add Label

# To chat
POST /label/chat
{
  "jid": "5511999999999@s.whatsapp.net",
  "labelId": "1"
}

# To message
POST /label/message
{
  "jid": "5511999999999@s.whatsapp.net",
  "labelId": "1",
  "messageId": "MESSAGE_ID"
}

Remove Label

POST /unlabel/chat
POST /unlabel/message

{
  "jid": "5511999999999@s.whatsapp.net",
  "labelId": "1",
  "messageId": "MESSAGE_ID"  # Only for /unlabel/message
}

Edit Label

POST /label/edit

{
  "labelId": "1",
  "name": "New Label Name"
}

List Labels

GET /label

### 🏘️ Communities

Create Community

POST /community/create

{
  "communityName": "My Community",
  "description": "Optional description"
}

Add/Remove Groups

POST /community/add
{
  "communityJID": "120363123456789012@g.us",
  "groupJID": ["120363111111111111@g.us"]
}

POST /community/remove
{
  "communityJID": "120363123456789012@g.us",
  "groupJID": ["120363111111111111@g.us"]
}

### 📢 Newsletters (Channels)

Create Newsletter

POST /newsletter/create

{
  "name": "My Channel",
  "description": "Optional description"
}

List Newsletters

GET /newsletter/list

Get Newsletter Info

POST /newsletter/info

{
  "jid": "120363123456789012@newsletter"
}

Subscribe

POST /newsletter/subscribe

{
  "jid": "120363123456789012@newsletter"
}

Get Newsletter Messages

POST /newsletter/messages

{
  "jid": "120363123456789012@newsletter",
  "limit": 50
}

Get Invite Link Info

POST /newsletter/link

{
  "key": "INVITE_KEY"
}

### 📞 Call Management

Reject Call

POST /call/reject

# Webhook payload from call event

Use with webhook automation to auto-reject calls.

### Broadcast Message to Multiple Contacts

for number in 5511999999999 5511888888888 5511777777777; do
  curl -X POST "$EVOGO_API_URL/send/text" \\
    -H "apikey: $EVOGO_API_KEY" \\
    -H "Content-Type: application/json" \\
    -d "{
      \\"number\\": \\"$number\\",
      \\"text\\": \\"Broadcast message\\",
      \\"delay\\": 2000
    }"
done

### Send Image with Mentions (Groups)

curl -X POST "$EVOGO_API_URL/send/media" \\
  -H "apikey: $EVOGO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{
    "number": "120363123456789012@g.us",
    "url": "https://example.com/report.jpg",
    "type": "image",
    "caption": "Report ready! @5511999999999 please review",
    "mentionedJid": ["5511999999999@s.whatsapp.net"]
  }'

### Auto-Create Group + Welcome Message

# 1. Create group
GROUP_JID=$(curl -s -X POST "$EVOGO_API_URL/group/create" \\
  -H "apikey: $EVOGO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{
    "groupName": "Team Alpha",
    "participants": ["5511999999999@s.whatsapp.net"]
  }' | jq -r '.groupJid')

# 2. Send welcome message
curl -X POST "$EVOGO_API_URL/send/text" \\
  -H "apikey: $EVOGO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d "{
    \\"number\\": \\"$GROUP_JID\\",
    \\"text\\": \\"Welcome to Team Alpha! 🎉\\"
  }"

### Check Multiple Numbers

curl -X POST "$EVOGO_API_URL/user/check" \\
  -H "apikey: $EVOGO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{
    "number": [
      "5511999999999",
      "5511888888888",
      "5511777777777"
    ]
  }'

### Delays

Always add delays between messages:

{"delay": 2000}  // 2 seconds

Recommended:

1-2 seconds between individual messages
3-5 seconds between mass sends
Exponential backoff on errors

### Error Handling

HTTP Status Codes:

200 - Success
400 - Bad request (check parameters)
401 - Unauthorized (check API key)
404 - Not found (instance/resource doesn't exist)
500 - Server error

Common Issues:

ErrorSolutionInstance not connectedRun POST /instance/connectInvalid phone formatUse international without +: 5511999999999Message not sentCheck GET /instance/statusGroup operation failedVerify you're admin (for admin operations)

### 🔗 Webhooks

Configure webhooks to receive real-time events:

Message received
Message sent
Connection status
Group updates
Calls received
And more...

Use POST /webhook/set endpoint to configure webhook URL (see Postman collection for details).

### Instance Won't Connect

# 1. Check if instance exists
GET /instance/all

# 2. Force reconnect
POST /instance/forcereconnect/{instance}

# 3. Check logs
GET /instance/logs/{instance}?level=error

### Messages Not Sending

Verify connection: GET /instance/status
Check phone format (no + or spaces)
Ensure recipient has WhatsApp
Verify API key is correct

### Group Operations Failing

Check you're admin (for admin operations)
Verify group JID format: xxxxx@g.us
Ensure participants use format: number@s.whatsapp.net

### 📚 Resources

Evolution API Go: https://github.com/EvolutionAPI/evolution-api
WhatsApp Business API: https://developers.facebook.com/docs/whatsapp
JID Format Guide: number@s.whatsapp.net for users, xxxxx@g.us for groups

### 🆕 Known Limitations

Not Working (v3.0):

/send/button - Interactive buttons (deprecated by WhatsApp)
/send/list - Interactive lists (deprecated by WhatsApp)

These endpoints exist but are non-functional due to WhatsApp API changes.

### 💡 Tips

Always check status before operations
Use delays to avoid rate limits (1-2s minimum)
Store tokens securely in environment variables
Handle disconnects with automatic reconnection
Validate numbers before sending
Use webhooks for real-time event handling
Monitor logs for troubleshooting
Test with small groups before mass operations

evoGo simplifies WhatsApp automation with Evolution API Go v3. For advanced features, check the full Postman collection or API documentation.
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: impa365
- Version: 1.0.1
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-03T00:46:51.193Z
- Expires at: 2026-05-10T00:46:51.193Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/evogo)
- [Send to Agent page](https://openagent3.xyz/skills/evogo/agent)
- [JSON manifest](https://openagent3.xyz/skills/evogo/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/evogo/agent.md)
- [Download page](https://openagent3.xyz/downloads/evogo)