Saltar al contenido principal

Proxy API (descontinuada)

Descontinuada desde la versión 2.3.0

La Proxy API se eliminará en una próxima versión. Existía para exponer la API a través de tu sitio WordPress, en una época en la que no había una API pública que llamar directo. Ahora la hay: la API de Joinotify hace lo mismo sin depender de que tu sitio esté en línea, con más tipos de mensaje, programación y confirmación real de entrega.

Las rutas siguen funcionando por ahora. Si aún las usas, mira cómo migrar más abajo.

La Proxy API expone endpoints REST en tu propio sitio que reenvían el envío a Joinotify. Un sistema externo llama a tu dominio; el plugin resuelve el transporte, la autenticación y la cola.

Resulta útil para:

  • Seguridad — tu token de Joinotify no sale de tu servidor; quien llama desde fuera usa una clave propia, que puedes rotar cuando quieras.
  • Sencillez — dos endpoints con un cuerpo mínimo, sin necesidad de conocer todo el contrato de la API.
  • Control — WordPress queda en medio, así que puedes limitar, filtrar o registrar las peticiones antes de reenviarlas.
Cuándo llamar directamente a la API de Joinotify

Si el sistema que envía ya habla HTTP con autenticación Bearer, llamar a la API de Joinotify directamente es más simple y no depende de que tu sitio esté en línea. La Proxy API existe para los casos en los que WordPress tiene que estar en medio.

Cómo migrar​

El destino es la API de Joinotify, llamada directamente por el sistema que envía. La clave es la misma que el plugin ya tiene: cógela en Joinotify → Ajustes → Integraciones, en la tarjeta de WhatsApp, o genera una propia en el panel.

AntesAhora
POST https://tusitio.com/wp-json/joinotify/v1/send-message/textPOST https://api.joinotify.com/messages con {"type":"text"}
POST .../send-message/mediaPOST https://api.joinotify.com/v1/{phone_number_id}/messages
Cabecera X-API-KeyCabecera Authorization: Bearer sk_live_…
receiver / messageto / body
El mismo envío, sin WordPress en medio
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": "¡Hola!" }'

Lo que ganas: los tipos de mensaje que la Proxy API nunca expuso (plantilla, botones, lista, carrusel, medios por id), programación con cancelación y el estado real de entrega — la Proxy API solo decía que el mensaje había sido aceptado.

Lo que pierdes: WordPress deja de estar en medio, así que los filtros o registros que tengas colgados ahí tienen que mudarse.

Saber si alguien todavía la usa​

Toda respuesta del proxy lleva dos cabeceras:

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).

Y cada llamada se registra en el log de depuración como WARNING. Por ahí se descubre qué integración sigue apuntando al formato antiguo antes de que las rutas desaparezcan.

Activación​

En Joinotify → Configuración → General, en la tarjeta Proxy API:

CampoPredeterminadoQué hace
Activar Proxy APIdesactivadoRegistra los endpoints en el sitio
Ruta de textosend-message/textRuta de los mensajes de texto
Ruta multimediasend-message/mediaRuta de los mensajes multimedia
Clave de APIvacíoValor esperado en la cabecera X-API-Key

Las rutas viven bajo el namespace joinotify/v1. Con los valores predeterminados, las direcciones finales son:

https://tusitio.com/wp-json/joinotify/v1/send-message/text
https://tusitio.com/wp-json/joinotify/v1/send-message/media
Vienen desactivados

Las rutas solo se registran con la Proxy API activada — y, desde la 2.4.0, viene desactivada en instalaciones nuevas. Sin activarla, WordPress responde 404.

Autenticación​

Envía la clave configurada en la cabecera X-API-Key. Sin ella — o con otro valor — la respuesta es 403.

Enviar un mensaje de texto​

POST /wp-json/joinotify/v1/send-message/text
curl -X POST https://tusitio.com/wp-json/joinotify/v1/send-message/text \
-H 'X-API-Key: cb9sDT9MRjlMnBIQglneN6uEEKxvrcpW' \
-H 'Content-Type: application/json' \
-d '{
"sender": "5541912345678",
"receiver": "5511910203040",
"message": "Tu pedido #1042 está confirmado.",
"delay": 60
}'
CampoObligatorioDescripción
sendersíTeléfono remitente en formato internacional
receiversíTeléfono del destinatario en formato internacional
messagesíTexto del mensaje
delaynoEspera en segundos antes de enviar. Sin él, el envío es inmediato

Enviar un mensaje multimedia​

POST /wp-json/joinotify/v1/send-message/media
curl -X POST https://tusitio.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://tusitio.com/wp-content/uploads/2026/07/manual.pdf",
"caption": "Aquí tienes el manual del producto."
}'
CampoObligatorioDescripción
sendersíTeléfono remitente en formato internacional
receiversíTeléfono del destinatario en formato internacional
media_typesíimage, video, document o audio
media_urlsíURL del archivo, en tu sitio o externa
captionnoLeyenda del archivo
delaynoEspera en segundos antes de enviar

Formatos aceptados por tipo​

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

Para autorizar otros formatos, usa el filtro Joinotify/Validations/Get_Mime_Types — consulta Recursos para desarrolladores.

Ejemplo: avisar cuando se publica una entrada​

El snippet siguiente va en el functions.php del tema o en un plugin de snippets como WPCode. Llama a la propia Proxy API del sitio, reutilizando los helpers que resuelven la dirección y la clave.

functions.php
add_action( 'publish_post', 'meumouse_avisar_entrada_publicada' );

/**
* Envía un mensaje de texto por la Proxy API cuando se publica una entrada.
*
* @param int $post_id | ID de la entrada publicada.
*/
function meumouse_avisar_entrada_publicada( $post_id ) {
if ( get_post_type( $post_id ) !== 'post' ) {
return;
}

$post = get_post( $post_id );

$mensaje = sprintf(
"¡Hola! Se ha publicado una nueva entrada en el sitio.\n\nTítulo: %s\nAutor: %s\nEnlace: %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' => $mensaje,
) ),
'timeout' => 15,
) );

if ( is_wp_error( $response ) ) {
error_log( 'Error al enviar el mensaje de texto: ' . $response->get_error_message() );
}
}
Llamando desde el propio sitio

Cuando el código ya se ejecuta en WordPress, puedes saltarte el HTTP y llamar directamente a joinotify_send_whatsapp_message_text(). La Proxy API es para quien está fuera del sitio.

La ventana de 24 horas también aplica aquí​

Con el transporte por Cloud API, un mensaje de texto libre solo se entrega dentro de la ventana de 24 horas. Fuera de ella hace falta una plantilla aprobada — y la Proxy API no expone el envío de plantillas. Consulta Envío a través de Joinotify Cloud.