curl --request POST \
--url https://api.wppfy.com/send/status \
--header 'Content-Type: application/json' \
--header 'token: <api-key>' \
--data '
{
"type": "text",
"text": "Novidades chegando!"
}
'{
"Id": "ABCD1234",
"content": {},
"messageTimestamp": 1672531200000,
"status": "Pending",
"debug": {
"status_privacy_type": "contacts",
"audience_recipient_count": 245,
"total_contacts_in_store": 300,
"contacts_with_full_name": 245,
"contacts_with_push_name_only": 32,
"contacts_with_business_name_only": 23,
"used_default_privacy_fallback": false,
"privacy_lookup_error": "privacy unavailable",
"explicit_recipients": true,
"requested_recipient_count": 25,
"resolved_recipient_count": 20,
"discarded_recipient_count": 5,
"discarded_recipients": [
{
"input": "144637553594388@lid",
"reason": "lid_unresolved"
}
],
"max_recipients": 100,
"selected_recipient_count": 100,
"partial_send": true
}
}{
"error": "Invalid font",
"debug": {}
}{
"error": "failed to determine status audience: privacy unavailable"
}Enviar status (stories)
Envia um status do WhatsApp com suporte para texto, imagem, vídeo e áudio.
Este endpoint possui 4 modos de uso:
- envio normal: omita
recipients,max_recipientsegroup - envio explícito: informe
recipientspara enviar apenas para números específicos; a API aproveita os válidos e descarta os inválidos com motivo nodebug - envio parcial: informe
max_recipientspara limitar a audiência ou aplicar um cap de segurança sobrerecipients - status de grupo: informe
groupcom o JID do grupo (@g.us)
Observação importante sobre recipients
Quando recipients é informado, a API:
- aceita números em formato WhatsApp, JIDs
@s.whatsapp.nete JIDs@lid - quando recebe
@lid, tenta resolver esse identificador para o PN (@s.whatsapp.net) usando os vínculos conhecidos pela instância - se o
@lidnão puder ser resolvido para PN, esse item é descartado com motivolid_unresolved - valida se o destinatário existe no WhatsApp usando o mesmo fluxo de verificação do envio normal, com batch para evitar uma chamada remota por recipient
- cruza os destinatários verificados com a audiência permitida pela privacidade do status, aceitando equivalência PN/LID quando esse vínculo é conhecido
- recipients descartados aparecem em
debug.discarded_recipients, com motivos comoinvalid_format,lid_unresolved,not_on_whatsapp,outside_status_audienceeduplicate - a requisição só retorna
400quando nenhum recipient válido sobra para envio
Observação importante sobre max_recipients
O campo max_recipients foi adicionado como mitigação operacional.
Já observamos casos em que o WhatsApp bloqueia imediatamente o envio de status quando a audiência é muito grande
(por exemplo, agendas com milhares de contatos, como ~3.000).
A causa exata ainda não está totalmente clara, então a recomendação é começar com limites menores e aumentar gradualmente.
Status de grupo
Com group, o status é publicado no grupo e aparece para os membros na aba Status, no lugar do status da conta. A conta precisa participar do grupo. Vale para texto, imagem e vídeo: áudio (audio, ptt e myaudio) não funciona no status de grupo e retorna 400.
- não combina com
recipientsnemmax_recipients(retorna400) - a resposta traz
Id,content,messageTimestampestatus, semdebug
Tipos suportados
text: texto com cor de fundo e fonteimage: imagem com legenda opcionalvideo: vídeo com legenda opcionalaudio: áudio normalmyaudio: áudio enviado como vozptt: áudio enviado como voz
Cores de fundo
Informe um valor de 1 a 19. A API converte esse índice para a cor usada pelo WhatsApp.
1: amarelo esverdeado suave2: amarelo pálido3: amarelo alaranjado vibrante4: verde vibrante5: verde musgo6: verde claro7: azul piscina8: azul intenso9: azul claro acinzentado10: lilás claro11: lilás quente12: roxo azulado13: magenta profundo14: rosa suave15: salmão rosado16: marrom claro17: cinza claro azulado18: cinza médio19: cinza profundo padrão
Exemplo rápido:
7: azul piscina13: magenta profundo19: cinza profundo (padrão)
Fontes válidas para type=text
Valores aceitos atualmente: 0, 1, 2, 6, 7, 8, 9, 10.
Limites
text: máximo de 656 caracteresmax_recipients: não pode ser negativorecipients: aceita números, JIDs@s.whatsapp.nete JIDs@lid@lidsó entra no envio quando puder ser resolvido localmente para um PN válido; caso contrário, é descartado- para tipos de mídia,
fileé obrigatório group: JID do grupo (@g.us)
Exemplo de envio explícito:
{
"type": "text",
"text": "Novidades chegando!",
"recipients": [
"5511999999999",
"5511888888888@s.whatsapp.net"
]
}
Exemplo de envio parcial:
{
"type": "text",
"text": "Novidades chegando!",
"background_color": 7,
"font": 1,
"max_recipients": 100
}
Exemplo de status de grupo:
{
"type": "image",
"file": "https://exemplo.com/status.jpg",
"text": "Aviso para o grupo",
"group": "120363123456789012@g.us"
}
curl --request POST \
--url https://api.wppfy.com/send/status \
--header 'Content-Type: application/json' \
--header 'token: <api-key>' \
--data '
{
"type": "text",
"text": "Novidades chegando!"
}
'{
"Id": "ABCD1234",
"content": {},
"messageTimestamp": 1672531200000,
"status": "Pending",
"debug": {
"status_privacy_type": "contacts",
"audience_recipient_count": 245,
"total_contacts_in_store": 300,
"contacts_with_full_name": 245,
"contacts_with_push_name_only": 32,
"contacts_with_business_name_only": 23,
"used_default_privacy_fallback": false,
"privacy_lookup_error": "privacy unavailable",
"explicit_recipients": true,
"requested_recipient_count": 25,
"resolved_recipient_count": 20,
"discarded_recipient_count": 5,
"discarded_recipients": [
{
"input": "144637553594388@lid",
"reason": "lid_unresolved"
}
],
"max_recipients": 100,
"selected_recipient_count": 100,
"partial_send": true
}
}{
"error": "Invalid font",
"debug": {}
}{
"error": "failed to determine status audience: privacy unavailable"
}Autorizações
Corpo
Tipo do status.
text, image, video, audio, myaudio, ptt "text"
Texto principal ou legenda.
"Novidades chegando!"
Índice da cor de fundo para status em texto.
1 <= x <= 197
Fonte aceita para type=text.
0, 1, 2, 6, 7, 8, 9, 10 1
URL ou base64 do arquivo de mídia.
"https://example.com/video.mp4"
Campo aceito no payload; a API gera a miniatura automaticamente quando necessário.
"https://example.com/thumb.jpg"
MIME type do arquivo, quando necessário.
"video/mp4"
Lista explícita de destinatários. Aceita números em formato WhatsApp, JIDs @s.whatsapp.net e JIDs @lid. A API valida item a item, descarta os inválidos com motivo no debug e envia para o subconjunto válido restante. Entradas @lid dependem de resolução conhecida para PN.
[
"5511999999999",
"5511888888888@s.whatsapp.net"
]
Limita o envio a um subconjunto determinístico da audiência. Quando recipients for informado, funciona como cap de segurança sobre a lista explícita já validada.
x >= 0100
JID do grupo (@g.us). Publica o status no grupo, para os membros, em vez do status da conta. Não combina com recipients nem max_recipients. Só texto, imagem e vídeo: áudio retorna 400.
"120363123456789012@g.us"
Resposta
Status enviado com sucesso
ID da mensagem quando há envio real.
"ABCD1234"
Conteúdo processado da mensagem quando há envio real.
Timestamp em milissegundos quando há envio real.
1672531200000
Status do envio quando há envio real.
"Pending"
Métricas agregadas da audiência e da seleção aplicada.
Show child attributes
Show child attributes
