Inicio / Comenzar / Autenticación

Autenticación

Toda llamada a la API requiere un código de seguridad (token Bearer) y un identificador tid en la URL. Ambos se generan en tu panel y están vinculados a una línea WhatsApp específica.

Headers requeridos

Cada request debe incluir estos dos headers HTTP. Sin ellos, el gateway responde 401 Unauthorized.

Authorization: Bearer TU_CODIGO_SEGURIDAD
Content-Type: application/json

Nunca expongas tu código de seguridad en el frontend. Llama siempre desde tu backend. Si se filtra, vuelve a generarlo desde wis.chat/wischat → Líneas → tu número → Código de seguridad.

El parámetro {tid}

El tid (Token ID) es el identificador único de tu línea WhatsApp dentro de Wis.Chat. Lo encuentras en el panel asociado a cada número certificado y forma parte de la URL del endpoint.

POST https://api.wis.chat/v22.0/{tid}/messages

Ejemplo: si tu tid es 15, tu URL final es:

https://api.wis.chat/v22.0/TU_ID_LINEA/messages

Multi-tenant: el gateway combina tid + código de seguridad para validar pertenencia. Un token de un tid no funciona contra otro tid. Esto te permite manejar múltiples líneas WhatsApp con credenciales aisladas.

Dónde obtener tus credenciales

1. Inicia sesión en el panel

Ingresa a wis.chat/wischat con tu usuario y contraseña de NOUXSOFT.

2. Ve a "Líneas"

En el menú lateral, haz clic en Líneas WhatsApp y selecciona tu número certificado.

3. Copia el tid

Es el ID numérico que aparece en la columna Token ID de tu línea.

4. Copia el código de seguridad

Haz clic en Mostrar código dentro del detalle de la línea. Si nunca lo viste, generalo desde "Regenerar".

Verifica tu autenticación

Para confirmar que tus credenciales funcionan, haz esta llamada de prueba que envía un mensaje de texto simple. El número 593999999999 del ejemplo es ficticio — reemplázalo por tu propio número de WhatsApp (formato E.164 sin +) para que el mensaje te llegue a ti y puedas verificar visualmente que funciona.

Antes de probar: envía cualquier mensaje desde tu WhatsApp personal al número de Wis.Chat (el número certificado de tu línea). Esto abre la ventana de 24 horas que permite enviarte mensajes de texto libre. Sin este paso recibirás el error outside_24h_window.

curl -X POST "https://api.wis.chat/v22.0/TU_ID_LINEA/messages" \
  -H "Authorization: Bearer TU_CODIGO_SEGURIDAD" \
  -H "Content-Type: application/json" \
  -d '{
    "messaging_product": "whatsapp",
    "to": "593999999999",
    "type": "text",
    "text": {
      "body": "Hola 👋 estoy probando WhatsApp con la API de Wis.Chat"
    }
  }'
// Reemplaza 15 por tu ID de línea (visible en wis.chat/wischat → Líneas)
$tid   = 15;
$token = 'TU_CODIGO_SEGURIDAD';

$ch = curl_init("https://api.wis.chat/v22.0/{$tid}/messages");
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS     => json_encode([
        'messaging_product' => 'whatsapp',
        'to'                => '593999999999',
        'type'              => 'text',
        'text'              => [
            'body' => 'Hola 👋 estoy probando WhatsApp con la API de Wis.Chat',
        ],
    ]),
    CURLOPT_HTTPHEADER     => [
        "Authorization: Bearer {$token}",
        'Content-Type: application/json',
    ],
]);
$res = json_decode(curl_exec($ch), true);
curl_close($ch);

echo $res['success'] ? 'OK' : 'ERROR';
// Reemplaza 15 por tu ID de línea (visible en wis.chat/wischat → Líneas)
const tid   = 15;
const token = 'TU_CODIGO_SEGURIDAD';

const res = await fetch(`https://api.wis.chat/v22.0/${tid}/messages`, {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    messaging_product: 'whatsapp',
    to:                '593999999999',
    type:              'text',
    text: {
      body: 'Hola 👋 estoy probando WhatsApp con la API de Wis.Chat',
    },
  }),
});
const data = await res.json();
console.log(data);
import requests

tid   = 15
token = 'TU_CODIGO_SEGURIDAD'

res = requests.post(
    f'https://api.wis.chat/v22.0/{tid}/messages',
    headers={
        'Authorization': f'Bearer {token}',
        'Content-Type': 'application/json',
    },
    json={
        'messaging_product': 'whatsapp',
        'to': '593999999999',
        'type': 'text',
        'text': {
            'body': 'Hola 👋 estoy probando WhatsApp con la API de Wis.Chat',
        },
    }
).json()

Si recibes "success": true

Tu autenticación funciona perfectamente. Pasa a explorar los tipos de mensaje.

Si recibes "error": "outside_24h_window"

El número destino no te ha escrito en las últimas 24 horas. Envía cualquier mensaje desde tu WhatsApp al número de Wis.Chat para reabrir la ventana, o usa una plantilla aprobada en lugar del tipo text.

Si recibes 401 o 403