Pular para o conteúdo principal

Proxy API (descontinuada)

Descontinuada desde a versão 2.3.0

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.

AntesAgora
POST https://seusite.com/wp-json/joinotify/v1/send-message/textPOST https://api.joinotify.com/messages com {"type":"text"}
POST .../send-message/mediaPOST https://api.joinotify.com/v1/{phone_number_id}/messages
Cabeçalho X-API-KeyCabeçalho Authorization: Bearer sk_live_…
receiver / messageto / body
O mesmo envio, sem o WordPress no meio
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:

CampoPadrãoO que faz
Ativar Proxy APIdesligadoRegistra os endpoints no site
Rota de textosend-message/textCaminho da rota de mensagens de texto
Rota de mídiasend-message/mediaCaminho da rota de mensagens de mídia
Chave de APIvazioValor 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
Vêm desligados

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​

POST /wp-json/joinotify/v1/send-message/text
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
}'
CampoObrigatórioDescrição
sendersimTelefone remetente em formato internacional
receiversimTelefone do destinatário em formato internacional
messagesimTexto da mensagem
delaynãoEspera em segundos antes de enviar. Sem ele, o envio é imediato

Enviar uma mensagem de mídia​

POST /wp-json/joinotify/v1/send-message/media
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."
}'
CampoObrigatórioDescrição
sendersimTelefone remetente em formato internacional
receiversimTelefone do destinatário em formato internacional
media_typesimimage, video, document ou audio
media_urlsimURL do arquivo, no seu site ou externa
captionnãoLegenda da mídia
delaynãoEspera em segundos antes de enviar

Formatos aceitos por tipo​

.jpeg · .png · .gif · .bmp · .webp

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.

functions.php
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() );
}
}
Chamando de dentro do próprio site

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.