Send status
Publishes a status (story) as text or media by public URL (media file upload is also supported).
curl --request POST \
--url https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance} \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"type": "text",
"content": "We are online!",
"caption": "<string>",
"backgroundColor": "#25D366",
"font": 2,
"statusJidList": [
"<string>"
],
"allContacts": true
}
'import requests
url = "https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance}"
payload = {
"type": "text",
"content": "We are online!",
"caption": "<string>",
"backgroundColor": "#25D366",
"font": 2,
"statusJidList": ["<string>"],
"allContacts": True
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
type: 'text',
content: 'We are online!',
caption: '<string>',
backgroundColor: '#25D366',
font: 2,
statusJidList: ['<string>'],
allContacts: true
})
};
fetch('https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'type' => 'text',
'content' => 'We are online!',
'caption' => '<string>',
'backgroundColor' => '#25D366',
'font' => 2,
'statusJidList' => [
'<string>'
],
'allContacts' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance}"
payload := strings.NewReader("{\n \"type\": \"text\",\n \"content\": \"We are online!\",\n \"caption\": \"<string>\",\n \"backgroundColor\": \"#25D366\",\n \"font\": 2,\n \"statusJidList\": [\n \"<string>\"\n ],\n \"allContacts\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance}")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"text\",\n \"content\": \"We are online!\",\n \"caption\": \"<string>\",\n \"backgroundColor\": \"#25D366\",\n \"font\": 2,\n \"statusJidList\": [\n \"<string>\"\n ],\n \"allContacts\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"text\",\n \"content\": \"We are online!\",\n \"caption\": \"<string>\",\n \"backgroundColor\": \"#25D366\",\n \"font\": 2,\n \"statusJidList\": [\n \"<string>\"\n ],\n \"allContacts\": true\n}"
response = http.request(request)
puts response.read_body{
"key": {
"remoteJid": "status@broadcast",
"fromMe": true,
"id": "3EB0STATUS112233445566"
},
"pushName": "Você",
"status": "PENDING",
"message": {
"extendedTextMessage": {
"text": "Promoção relâmpago hoje!",
"backgroundArgb": 4278190080,
"font": 3
}
},
"contextInfo": null,
"messageType": "extendedTextMessage",
"messageTimestamp": 1720483440,
"instanceId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"source": "web"
}{
"status": 400,
"error": "Bad Request",
"message": "Invalid payload"
}Authorizations
Your Pilot Status API key (ps_...). Evolution GO also accepts Authorization: Bearer <key>.
Path Parameters
The number's display name in the Pilot Status dashboard.
Body
One of text, image, audio, video.
"text"
Status text, or the public URL of the media.
"We are online!"
Caption for media statuses.
Background color for text statuses (e.g. #25D366).
"#25D366"
Font index for text statuses (0–5).
2
Recipient JIDs (numeric strings) allowed to see the status.
Publish to all contacts instead of a JID list.
true
Response
Success — provider-native response body.
Posted a status/story broadcast. Returns the persisted Baileys messageRaw envelope; remoteJid is 'status@broadcast'. The message content key depends on the status type (text/image/video/audio).
Show child attributes
Show child attributes
ERROR, PENDING, SERVER_ACK, DELIVERY_ACK, READ, PLAYED Status content. For a text status an extendedTextMessage is present.
Show child attributes
Show child attributes
Was this page helpful?
curl --request POST \
--url https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance} \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"type": "text",
"content": "We are online!",
"caption": "<string>",
"backgroundColor": "#25D366",
"font": 2,
"statusJidList": [
"<string>"
],
"allContacts": true
}
'import requests
url = "https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance}"
payload = {
"type": "text",
"content": "We are online!",
"caption": "<string>",
"backgroundColor": "#25D366",
"font": 2,
"statusJidList": ["<string>"],
"allContacts": True
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
type: 'text',
content: 'We are online!',
caption: '<string>',
backgroundColor: '#25D366',
font: 2,
statusJidList: ['<string>'],
allContacts: true
})
};
fetch('https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'type' => 'text',
'content' => 'We are online!',
'caption' => '<string>',
'backgroundColor' => '#25D366',
'font' => 2,
'statusJidList' => [
'<string>'
],
'allContacts' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance}"
payload := strings.NewReader("{\n \"type\": \"text\",\n \"content\": \"We are online!\",\n \"caption\": \"<string>\",\n \"backgroundColor\": \"#25D366\",\n \"font\": 2,\n \"statusJidList\": [\n \"<string>\"\n ],\n \"allContacts\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance}")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"text\",\n \"content\": \"We are online!\",\n \"caption\": \"<string>\",\n \"backgroundColor\": \"#25D366\",\n \"font\": 2,\n \"statusJidList\": [\n \"<string>\"\n ],\n \"allContacts\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pilotstatus.com.br/api/layer/evolution-v2/message/sendStatus/{instance}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"text\",\n \"content\": \"We are online!\",\n \"caption\": \"<string>\",\n \"backgroundColor\": \"#25D366\",\n \"font\": 2,\n \"statusJidList\": [\n \"<string>\"\n ],\n \"allContacts\": true\n}"
response = http.request(request)
puts response.read_body{
"key": {
"remoteJid": "status@broadcast",
"fromMe": true,
"id": "3EB0STATUS112233445566"
},
"pushName": "Você",
"status": "PENDING",
"message": {
"extendedTextMessage": {
"text": "Promoção relâmpago hoje!",
"backgroundArgb": 4278190080,
"font": 3
}
},
"contextInfo": null,
"messageType": "extendedTextMessage",
"messageTimestamp": 1720483440,
"instanceId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"source": "web"
}{
"status": 400,
"error": "Bad Request",
"message": "Invalid payload"
}