curl --request POST \
--url https://api.notifique.dev/v1/whatsapp/messages/presence \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"from": "+5528999999999",
"presence": "composing",
"messageId": "wamid.HBgNNTUxMTk5OTk5OTk5FQIAEhgg..."
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
from: '+5528999999999',
presence: 'composing',
messageId: 'wamid.HBgNNTUxMTk5OTk5OTk5FQIAEhgg...'
})
};
fetch('https://api.notifique.dev/v1/whatsapp/messages/presence', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.notifique.dev/v1/whatsapp/messages/presence"
payload = {
"from": "+5528999999999",
"presence": "composing",
"messageId": "wamid.HBgNNTUxMTk5OTk5OTk5FQIAEhgg..."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.notifique.dev/v1/whatsapp/messages/presence"
payload := strings.NewReader("{\n \"from\": \"+5528999999999\",\n \"presence\": \"composing\",\n \"messageId\": \"wamid.HBgNNTUxMTk5OTk5OTk5FQIAEhgg...\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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))
}{
"success": true,
"data": {
"ok": true
}
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "string",
"message": "string",
"code": "string",
"details": [
{
"field": "string",
"message": "string"
}
],
"note": "string"
}Send WhatsApp chat presence
Shows the typing indicator. Set from to the instance ID, E.164 phone number, or instance name; the legacy instanceId field is also accepted. If both are sent, from takes precedence. Pools are not supported. For official Meta and Gupshup connections, messageId must be the external ID of an incoming message (messages[].id in the webhook or externalMessageId in the list); only composing is accepted. QR connections require to and accept composing or recording.
curl --request POST \
--url https://api.notifique.dev/v1/whatsapp/messages/presence \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"from": "+5528999999999",
"presence": "composing",
"messageId": "wamid.HBgNNTUxMTk5OTk5OTk5FQIAEhgg..."
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
from: '+5528999999999',
presence: 'composing',
messageId: 'wamid.HBgNNTUxMTk5OTk5OTk5FQIAEhgg...'
})
};
fetch('https://api.notifique.dev/v1/whatsapp/messages/presence', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.notifique.dev/v1/whatsapp/messages/presence"
payload = {
"from": "+5528999999999",
"presence": "composing",
"messageId": "wamid.HBgNNTUxMTk5OTk5OTk5FQIAEhgg..."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.notifique.dev/v1/whatsapp/messages/presence"
payload := strings.NewReader("{\n \"from\": \"+5528999999999\",\n \"presence\": \"composing\",\n \"messageId\": \"wamid.HBgNNTUxMTk5OTk5OTk5FQIAEhgg...\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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))
}{
"success": true,
"data": {
"ok": true
}
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "string",
"message": "string",
"code": "string",
"details": [
{
"field": "string",
"message": "string"
}
],
"note": "string"
}Authorizations
API Key no header Authorization. Exemplo: Authorization: Bearer sk_live_xxxxx
Body
- Option 1
- Option 2
composing = typing; recording = recording audio (QR only). Meta and Gupshup accept composing only.
composing, recording WhatsApp instance ID, E.164 phone number, or instance name. Required with presence unless instanceId is sent. Pools are not supported.
E.164 phone number or JID (@s.whatsapp.net / @g.us). Required for QR connections; ignored by official connections.
Reservado para uso futuro; ignorado na v1
External ID of the incoming message. Required for official Meta and Gupshup; use messages[].id from the webhook or externalMessageId from GET /v1/whatsapp/messages/inbound. Do not use the list internal id.
1 - 256Legacy alias for the instance ID. E.164 phone number and instance name are also accepted; from takes precedence when both are sent.
Was this page helpful?

