Proxy API (descontinuada)
A Proxy API será removida em uma próxima versão. Ela existia para expor a API através do seu site WordPress, numa época em que não havia uma API pública para chamar direto. Hoje há: a API do Joinotify faz o mesmo sem depender do seu site estar no ar, com mais tipos de mensagem, agendamento e confirmação real de entrega.
As rotas continuam funcionando por enquanto. Se você ainda as usa, veja como migrar abaixo.
A Proxy API expõe endpoints REST no seu próprio site que encaminham o envio para o Joinotify. Um sistema externo chama o seu domínio; o plugin resolve o transporte, a autenticação e a fila.
Ela é útil para:
- Segurança — o token do Joinotify não sai do seu servidor; quem chama de fora usa uma chave própria, que você pode trocar a qualquer momento.
- Simplicidade — dois endpoints com corpo mínimo, sem precisar entender o contrato completo da API.
- Controle — o WordPress fica no meio do caminho, então você pode limitar, filtrar ou registrar as requisições antes de encaminhá-las.
Como migrar
O destino é a API do Joinotify, chamada direto pelo sistema que envia. A chave é a mesma que o plugin já usa — pegue em Joinotify → Configurações → Integrações, no card do WhatsApp, ou gere uma própria no painel.
| Antes | Agora |
|---|---|
POST https://seusite.com/wp-json/joinotify/v1/send-message/text | POST https://api.joinotify.com/messages com {"type":"text"} |
POST .../send-message/media | POST https://api.joinotify.com/v1/{phone_number_id}/messages |
Cabeçalho X-API-Key | Cabeçalho Authorization: Bearer sk_live_… |
receiver / message | to / body |
curl -X POST https://api.joinotify.com/messages \
-H 'Authorization: Bearer sk_live_xxx' \
-H 'Content-Type: application/json' \
-d '{ "type": "text", "to": "5511910203040", "body": "Olá!" }'
O que você ganha na troca: os tipos de mensagem que a Proxy API nunca expôs (template, botões,
lista, carrossel, mídia por id), agendamento com cancelamento
e o status real de entrega — a Proxy API só
dizia que a mensagem foi aceita.
O que você perde: o WordPress deixa de ficar no meio do caminho, então filtros ou registros que você tenha pendurado ali precisam mudar de lugar.
Como saber se ainda estão usando
Toda resposta das rotas do proxy carrega dois cabeçalhos:
Deprecation: true
X-Joinotify-Deprecation: The Joinotify Proxy API is deprecated and will be removed in an
upcoming release. Migrate to the Joinotify API (official WhatsApp Cloud API).
E cada chamada é registrada no log de depuração como WARNING. É por ali que se descobre qual
integração ainda aponta para o formato antigo antes de as rotas saírem.
Ativando
Em Joinotify → Configurações → Geral, no card Proxy API:
| Campo | Padrão | O que faz |
|---|---|---|
| Ativar Proxy API | desligado | Registra os endpoints no site |
| Rota de texto | send-message/text | Caminho da rota de mensagens de texto |
| Rota de mídia | send-message/media | Caminho da rota de mensagens de mídia |
| Chave de API | vazio | Valor esperado no cabeçalho X-API-Key |
As rotas ficam sob o namespace joinotify/v1. Com os valores padrão, os endereços finais são:
https://seusite.com/wp-json/joinotify/v1/send-message/text
https://seusite.com/wp-json/joinotify/v1/send-message/media
As rotas só são registradas com a Proxy API ativada — e, desde a 2.4.0, ela vem desligada em instalações novas. Sem ativar, o WordPress responde 404.
Autenticação
Envie a chave configurada no cabeçalho X-API-Key. Sem ela — ou com valor diferente — a
resposta é 403.
Enviar uma mensagem de texto
curl -X POST https://seusite.com/wp-json/joinotify/v1/send-message/text \
-H 'X-API-Key: cb9sDT9MRjlMnBIQglneN6uEEKxvrcpW' \
-H 'Content-Type: application/json' \
-d '{
"sender": "5541912345678",
"receiver": "5511910203040",
"message": "Seu pedido #1042 foi confirmado.",
"delay": 60
}'
| Campo | Obrigatório | Descrição |
|---|---|---|
sender | sim | Telefone remetente em formato internacional |
receiver | sim | Telefone do destinatário em formato internacional |
message | sim | Texto da mensagem |
delay | não | Espera em segundos antes de enviar. Sem ele, o envio é imediato |
Enviar uma mensagem de mídia
curl -X POST https://seusite.com/wp-json/joinotify/v1/send-message/media \
-H 'X-API-Key: cb9sDT9MRjlMnBIQglneN6uEEKxvrcpW' \
-H 'Content-Type: application/json' \
-d '{
"sender": "5541912345678",
"receiver": "5511910203040",
"media_type": "document",
"media_url": "https://seusite.com/wp-content/uploads/2026/07/manual.pdf",
"caption": "Segue o manual do produto."
}'
| Campo | Obrigatório | Descrição |
|---|---|---|
sender | sim | Telefone remetente em formato internacional |
receiver | sim | Telefone do destinatário em formato internacional |
media_type | sim | image, video, document ou audio |
media_url | sim | URL do arquivo, no seu site ou externa |
caption | não | Legenda da mídia |
delay | não | Espera em segundos antes de enviar |
Formatos aceitos por tipo
- Imagem
- Vídeo
- Documento
- Áudio
.jpeg · .png · .gif · .bmp · .webp
.mp4 · .3gp · .avi · .mpeg
.pdf · .doc · .docx · .xls · .xlsx · .ppt · .pptx · .txt
.mp3 · .mpeg · .ogg · .oga · .wav · .amr
Para autorizar outros formatos, use o filtro Joinotify/Validations/Get_Mime_Types — veja
Recursos para desenvolvedores.
Exemplo: avisar quando um post é publicado
O snippet abaixo vai no functions.php do tema ou em um plugin de snippets como o
WPCode. Ele chama a própria Proxy
API do site, reaproveitando os helpers que resolvem o endereço e a chave.
add_action( 'publish_post', 'meumouse_avisar_post_publicado' );
/**
* Envia uma mensagem de texto pela Proxy API quando um post é publicado.
*
* @param int $post_id | ID do post publicado.
*/
function meumouse_avisar_post_publicado( $post_id ) {
if ( get_post_type( $post_id ) !== 'post' ) {
return;
}
$post = get_post( $post_id );
$mensagem = sprintf(
"Olá, um novo post foi publicado no site!\n\nTítulo: %s\nAutor: %s\nLink: %s",
$post->post_title,
get_the_author_meta( 'display_name', $post->post_author ),
get_permalink( $post_id )
);
$response = wp_remote_post( joinotify_proxy_api_text_message_text_endpoint(), array(
'headers' => array(
'Content-Type' => 'application/json',
'X-API-Key' => joinotify_get_proxy_api_key(),
),
'body' => wp_json_encode( array(
'sender' => joinotify_get_first_sender(),
'receiver' => '5511910203040',
'message' => $mensagem,
) ),
'timeout' => 15,
) );
if ( is_wp_error( $response ) ) {
error_log( 'Erro ao enviar mensagem de texto: ' . $response->get_error_message() );
}
}
Quando o código já roda no WordPress, dá para pular o HTTP e chamar
joinotify_send_whatsapp_message_text() direto. A Proxy API é para quem está fora do site.
A janela de 24 horas vale aqui também
Com o transporte pela Cloud API, uma mensagem de texto livre só é entregue dentro da janela de 24 horas. Fora dela, é preciso um template aprovado — e a Proxy API não expõe envio de template. Veja Transporte pelo Joinotify Cloud.