Base URL
Point your HTTP client or environment variable at the following base URL to start using the Evolution GO layer:Authentication
Pass your Pilot Status API key using the same header your existing Evolution GO code already sends. If your code uses theapikey header, continue using it:
Supported operations
Every request is a call to<METHOD> https://pilotstatus.com.br/api/layer/evolution-go<PATH>. The instance is resolved from your API key, so Evolution GO paths that normally carry an instance segment do not need one here. Send operations are automatically load-balanced across your number’s connected instances.
Instance (session)
Send (load-balanced)
These endpoints send messages through the Evolution GO layer; the number is selected by the API key, so the path has no instance segment andnumber in the body is the recipient.
POST /send/text — Send text message
POST /send/text — Send text message
linkPreview is true the server enriches the first URL in text with an OpenGraph preview card.POST /send/link — Send link preview
POST /send/link — Send link preview
title, description and imgUrl from the URL found in text, so those fields are optional and any value you pass may be overridden.POST /send/media — Send media message
POST /send/media — Send media message
multipart/form-data upload with a file field; type selects the media kind.POST /send/poll — Send poll
POST /send/poll — Send poll
POST /send/sticker — Send sticker
POST /send/sticker — Send sticker
POST /send/location — Send location
POST /send/location — Send location
POST /send/contact — Send contact card
POST /send/contact — Send contact card
fullName and phone are required inside vcard.POST /send/carousel — Send carousel cards
POST /send/carousel — Send carousel cards
User / Contacts
The apikey selects the number, so no instance segment appears in the path or body.POST /user/info — Get user info
POST /user/info — Get user info
POST /user/check — Check on WhatsApp
POST /user/check — Check on WhatsApp
POST /user/avatar — Get user avatar
POST /user/avatar — Get user avatar
GET /user/contacts — List contacts
GET /user/contacts — List contacts
GET /user/privacy — Get privacy settings
GET /user/privacy — Get privacy settings
POST /user/privacy — Set privacy settings
POST /user/privacy — Set privacy settings
all, contacts, contact_blacklist, known, match_last_seen, or none.POST /user/block — Block a contact
POST /user/block — Block a contact
POST /user/unblock — Unblock a contact
POST /user/unblock — Unblock a contact
GET /user/blocklist — List blocked contacts
GET /user/blocklist — List blocked contacts
POST /user/profilePicture — Set profile picture
POST /user/profilePicture — Set profile picture
POST /user/profileName — Set profile name
POST /user/profileName — Set profile name
POST /user/profileStatus — Set profile status
POST /user/profileStatus — Set profile status
Message
Message-level actions on the connected number — the apikey selects the number, so never include an instance in the path or body.POST /message/react — React to message
POST /message/react — React to message
fromMe and (for group messages) the participant author.POST /message/presence — Send chat presence
POST /message/presence — Send chat presence
POST /message/markread — Mark messages read
POST /message/markread — Mark messages read
POST /message/downloadmedia — Download media
POST /message/downloadmedia — Download media
POST /message/status — Get message status
POST /message/status — Get message status
POST /message/delete — Delete for everyone
POST /message/delete — Delete for everyone
POST /message/edit — Edit a message
POST /message/edit — Edit a message
Chat
Manage chat state (pin, archive, mute) and request message history for the number selected by your API key.POST /chat/pin — Pin a chat
POST /chat/pin — Pin a chat
POST /chat/unpin — Unpin a chat
POST /chat/unpin — Unpin a chat
POST /chat/archive — Archive a chat
POST /chat/archive — Archive a chat
POST /chat/unarchive — Unarchive a chat
POST /chat/unarchive — Unarchive a chat
POST /chat/mute — Mute a chat
POST /chat/mute — Mute a chat
POST /chat/unmute — Unmute a chat
POST /chat/unmute — Unmute a chat
POST /chat/history-sync — Request history sync
POST /chat/history-sync — Request history sync
messageInfo object identifies the anchor message (its Chat JID, message ID, direction flags, and Timestamp); fields are unmarshalled from the whatsmeow MessageInfo type, so keys are PascalCase and Chat is a JID string.Group
Manage WhatsApp groups for the connected number: list, inspect, create, update, and join or leave. The apikey selects the number, so no instance segment is used.GET /group/list — List joined groups
GET /group/list — List joined groups
POST /group/info — Get group info
POST /group/info — Get group info
POST /group/invitelink — Get invite link
POST /group/invitelink — Get invite link
POST /group/photo — Set group photo
POST /group/photo — Set group photo
POST /group/name — Set group name
POST /group/name — Set group name
POST /group/description — Set group description
POST /group/description — Set group description
POST /group/create — Create group
POST /group/create — Create group
POST /group/participant — Update participants
POST /group/participant — Update participants
GET /group/myall — List owned groups
GET /group/myall — List owned groups
POST /group/join — Join via invite
POST /group/join — Join via invite
POST /group/leave — Leave group
POST /group/leave — Leave group
Call (voice)
Place, answer, reject, hang up and stream audio on WhatsApp voice calls. The apikey selects the number, so no instance goes in the path or body.POST /call/start — Start outbound call
POST /call/start — Start outbound call
GET /call/list — List active calls
GET /call/list — List active calls
POST /call/get — Get call by id
POST /call/get — Get call by id
POST /call/answer — Answer incoming call
POST /call/answer — Answer incoming call
callId to answer the latest incoming call.POST /call/reject — Reject call
POST /call/reject — Reject call
callCreator.POST /call/reject/by-id — Reject tracked call
POST /call/reject/by-id — Reject tracked call
POST /call/reject/latest — Reject latest offer
POST /call/reject/latest — Reject latest offer
POST /call/hangup — Hang up call
POST /call/hangup — Hang up call
POST /call/media/play — Play audio to call
POST /call/media/play — Play audio to call
filePath) or a multipart/form-data upload with fields callId, audio (or file) and hangupAfterPlay.POST /call/media/realtime/session — Create realtime session
POST /call/media/realtime/session — Create realtime session
Community
Manage WhatsApp communities and their linked groups. The API key selects the number, so no instance is included in the path or body.POST /community/create — Create community
POST /community/create — Create community
POST /community/add — Add groups
POST /community/add — Add groups
POST /community/remove — Remove groups
POST /community/remove — Remove groups
Label
Manage WhatsApp labels: attach or detach them from chats and messages, edit a label, and list all labels. The apikey selects the number, so no instance is included in the path or body.POST /label/chat — Add label to chat
POST /label/chat — Add label to chat
POST /label/message — Add label to message
POST /label/message — Add label to message
POST /label/edit — Edit label
POST /label/edit — Edit label
GET /label/list — List all labels
GET /label/list — List all labels
POST /unlabel/chat — Remove label from chat
POST /unlabel/chat — Remove label from chat
POST /unlabel/message — Remove label from message
POST /unlabel/message — Remove label from message
Newsletter / Channels
Manage WhatsApp newsletters (channels) — create, list, inspect, resolve invites, subscribe, and fetch messages. The apikey selects the number, so no instance segment appears in the path.Blocked (admin/global)
These global and admin-only Evolution GO paths are not exposed through the layer and return 403:GET /server/ok · /swagger/* · POST /instance/create · GET /instance/all · GET /instance/info/{id} · DELETE /instance/delete/{id} · POST /instance/proxy/{id} · DELETE /instance/proxy/{id} · POST /instance/forcereconnect/{id} · GET /instance/logs/{id}
URLs in the request must be public
Some operations make the provider download or call a URL you send. Since 2026-09-28, Pilot Status checks each of those URLs before forwarding the request. If one points to an internal or private network address —localhost, a loopback or private IP, a host name without a dot, or a name that resolves to one of those — the request is refused with 400 and nothing is forwarded:
- Media sent by URL:
/send/media(url),/send/sticker(sticker),/send/button(imageUrl) and/send/carousel(each card’sthumbnailUrl). - Links:
/send/link(imgUrl, and the link intext), and the link in/send/text’stextwhen you sendlinkPreview: true. - Pictures:
/user/profilePictureand/group/photo(image). - Webhook:
/instance/connect(webhookUrl).
http(s) values are checked: base64 and data: media pass untouched, and a multipart upload is forwarded as is. A host name that does not resolve is not refused here.
Events
The layer forwards events to your configured webhook in Evolution GO’s own native (PascalCase) format, so your existing event handlers keep working unchanged:Message · SendMessage · Receipt · Presence · ChatPresence · Archive · CallOffer · CallAccept · CallTerminate · Connected · PairSuccess · TemporaryBan · LoggedOut · ConnectFailure · Disconnected · LabelEdit · LabelAssociationChat · LabelAssociationMessage · Contact · PushName · GroupInfo · JoinedGroup · NewsletterJoin · NewsletterLeave · QRCode · QRSuccess
The modern UPPER_SNAKE aliases are also accepted:
MESSAGES_UPSERT · SEND_MESSAGE · CONNECTION_UPDATE · QRCODE_UPDATED · PRESENCE_UPDATE · CHATS_UPSERT · CHATS_UPDATE · CHATS_DELETE · GROUPS_UPSERT · GROUPS_UPDATE · GROUP_PARTICIPANTS_UPDATE · CALL · CONTACTS_UPSERT · CONTACTS_UPDATE · NEWSLETTER_UPDATE · LABEL_EDIT · LABEL_ASSOCIATION
In addition, Pilot Status can deliver its own normalized events alongside the native ones:
- Call lifecycle:
call.ringing,call.connected,call.ended,call.missed - Number lifecycle:
number.created,number.connected,number.disconnected,number.removed,number.restored
Example: send text via Evolution GO layer
The request below is a real Evolution GO layer call — a standardPOST /send/text, with only the base URL changed to route through Pilot Status. There is no instance segment in the path: the apikey header selects the instance.
POST /send/text — number and text, plus optional fields like delay, quoted, and mentionedJid. The response format is identical to what your existing code consumes.