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"
}Enviar presencia en el chat de WhatsApp
Muestra el indicador de escritura. En from, indica el ID, el teléfono E.164 o el nombre de la instancia; también se acepta el campo legado instanceId. Si envías ambos, from tiene prioridad. No se aceptan pools. En conexiones oficiales de Meta y Gupshup, messageId debe ser el ID externo de un mensaje recibido (messages[].id en el webhook o externalMessageId en la lista); solo se acepta composing. Las conexiones QR requieren to y aceptan composing o 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"
}Autorizaciones
API Key no header Authorization. Exemplo: Authorization: Bearer sk_live_xxxxx
Cuerpo
- Option 1
- Option 2
composing = escribiendo; recording = grabando audio (solo QR). Meta y Gupshup aceptan únicamente composing.
composing, recording ID, teléfono E.164 o nombre de la instancia de WhatsApp. Obligatorio junto con presence, salvo que se envíe instanceId. No se aceptan pools.
Teléfono E.164 o JID (@s.whatsapp.net / @g.us). Obligatorio para conexiones QR; las oficiales lo ignoran.
Reservado para uso futuro; ignorado na v1
ID externo del mensaje recibido. Obligatorio para Meta y Gupshup oficiales; usa messages[].id del webhook o externalMessageId de GET /v1/whatsapp/messages/inbound. No uses el id interno de la lista.
1 - 256Alias legado del ID de la instancia. También acepta teléfono E.164 o nombre; from tiene prioridad si se envían ambos.
¿Esta página le ayudó?

