Skip to main content
The Pilot Status Evolution GO API Layer gives you a drop-in replacement for your Evolution GO server. You keep every request body, header, and path exactly as they are today — the only change you make is swapping out your base URL. Pilot Status translates your Evolution GO-compatible requests into its native API and returns responses in the format your code already handles.

Base URL

Point your HTTP client or environment variable at the following base URL to start using the Evolution GO layer:
All paths you currently use with your Evolution GO server append directly to this URL. No other changes are required.

Authentication

Pass your Pilot Status API key using the same header your existing Evolution GO code already sends. If your code uses the apikey header, continue using it:
If your code uses a Bearer token header instead, that format is also accepted:
Use whichever format matches your existing implementation — you do not need to change your authentication code.

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.
Any path not listed below returns 404. Global or admin-only paths return 403 — they are never exposed through the layer (see Blocked paths).

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 and number in the body is the recipient.
Sends a plain text message; when linkPreview is true the server enriches the first URL in text with an OpenGraph preview card.
Sends a text message with a rich link card; the server auto-fetches title, description and imgUrl from the URL found in text, so those fields are optional and any value you pass may be overridden.
Sends an image, video, audio or document by URL (JSON body) — or as a multipart/form-data upload with a file field; type selects the media kind.
Sends a poll with a question and a list of options; requires at least two options.
Sends a sticker from an image URL; the server downloads it and converts it to WebP before sending.
Sends a geographic location pin with a name and address label.
Sends a vCard contact card; fullName and phone are required inside vcard.
Sends an interactive message with tappable buttons; each button’s behavior is set per-item via type (reply, url, call, copy, etc.).
Sends a menu message where the recipient taps buttonText to open sections of selectable rows.
Sends a horizontally scrollable carousel; each card has its own image, text and buttons.

User / Contacts

The apikey selects the number, so no instance segment appears in the path or body.
Fetches WhatsApp account details (JID, name, business name) for one or more phone numbers.
Checks whether the given phone numbers are registered on WhatsApp.
Returns the profile picture URL for a phone number.
Returns all contacts stored for the connected number.No request body.
Returns the connected number’s current privacy settings.No request body.
Updates the connected number’s privacy settings. Each field takes a privacy scope such as all, contacts, contact_blacklist, known, match_last_seen, or none.
Blocks the given contact for the connected number.
Removes the given contact from the block list.
Returns the block list for the connected number.No request body.
Sets the connected number’s profile picture.
Updates the connected number’s display name.
Updates the connected number’s status (about) text.

Message

Message-level actions on the connected number — the apikey selects the number, so never include an instance in the path or body.
Sends an emoji reaction to an existing message; supports fromMe and (for group messages) the participant author.
Broadcasts a typing or recording presence indicator to a chat.
Marks one or more messages in a chat as read.
Downloads and decrypts the media attached to a received message, returning it as a base64 data URL.
Looks up the stored delivery status of a message by its ID.
Revokes a message for everyone in the chat.
Replaces the text content of a previously sent message.

Chat

Manage chat state (pin, archive, mute) and request message history for the number selected by your API key.
Pins a chat to the top of the list.
Removes a chat from the pinned list.
Archives a chat, hiding it from the main list.
Restores an archived chat back to the main list.
Mutes notifications for a chat.
Re-enables notifications for a muted chat.
Requests older message history from before a reference message. The 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.
Returns every group the connected number has joined.No request body.
Fetches metadata (name, participants, owner) for a single group.
Returns the group’s invite link, optionally revoking the old one first.
Sets the group’s profile picture from a public URL or a base64 data URI.
Updates the group’s subject (name).
Updates the group’s description (topic).
Creates a new group with the given name and initial participants.
Adds, removes, promotes, or demotes participants in a group.
Returns only the groups the connected number owns (is admin/owner of).No request body.
Joins a group using an invite code (the token from an invite link).
Leaves the specified 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.
Places an outbound WhatsApp voice call to the given number and returns the created call session.
Returns all currently tracked call sessions for the number.No request body.
Returns the current state of a single tracked call session.
Answers a ringing incoming call; omit callId to answer the latest incoming call.
Rejects a call; if the call is no longer tracked, it falls back to rejecting via callCreator.
Rejects a currently tracked call by its identifier.
Rejects the most recently offered incoming call for the number.No request body.
Ends an active call by its identifier.
Streams an audio file into an active call. Accepts this JSON body (server-side filePath) or a multipart/form-data upload with fields callId, audio (or file) and hangupAfterPlay.
Creates a short-lived token and WebSocket URL for streaming realtime PCM audio to/from an active call.

Community

Manage WhatsApp communities and their linked groups. The API key selects the number, so no instance is included in the path or body.
Creates a new community with the given name.
Links one or more existing groups to a community.
Unlinks one or more groups from a community.

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.
Attaches an existing label to a chat.
Attaches an existing label to a specific message in a chat.
Creates or updates a label’s name, color, or deleted state.
Returns every label defined on the connected number.No request body.
Detaches a label from a chat.
Detaches a label from a specific message in a chat.

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.
Creates a new newsletter (channel) with a name and optional description.
Returns all newsletters the connected number is subscribed to.No request body.
Fetches metadata for a single newsletter by its JID.
Resolves newsletter metadata from an invite key (the code portion of a channel invite link).
Subscribes the connected number to live updates for the given newsletter JID.
Fetches messages from a newsletter, with optional count and before-id pagination.

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}

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

Example: send text via Evolution GO layer

The request below is a real Evolution GO layer call — a standard POST /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.
The body fields are the same your Evolution GO code already sends to POST /send/textnumber and text, plus optional fields like delay, quoted, and mentionedJid. The response format is identical to what your existing code consumes.
If any Evolution GO operation is not supported by the layer, use the native Pilot Status API instead. For specific compatibility questions, contact support on WhatsApp: +55 11 96743-5133.