Saltar al contenido
whatsapi.sh
Tema
Docs

OTP que te devuelve el código

Una llamada envía el código de acceso a tu usuario y te devuelve el mismo código, para que tu app lo verifique como quiera. La mayoría de las integraciones de OTP por WhatsApp pasan una semana construyendo exactamente esto.

Envía y recibe el código

import { Whatsapi } from "@whatsapi.sh/sdk";

const wa = new Whatsapi({ apiKey: "wa_your_key" });

const data = await wa.sendOtp({ to: "+5511988887777" });
200 OK
{
  "data": {
    "code": "482913",
    "expiresAt": "2026-08-24T19:05:00.000Z",
    "to": "+5511988887777",
    "messageId": "3EB0…"
  }
}

El código es tuyo: compáralo en tu backend, muéstralo en tu interfaz, o no hagas ninguna de las dos y usa /v1/otp/check. Para verificarlo, guardamos solo un hash con salt. El mensaje que lo llevó queda en el historial del chat, como cualquier otro. El código sale al instante, sin “escribiendo…” antes. El primer código a alguien con quien tu número nunca habló (esa persona nunca le escribió y tu número nunca le envió nada por aquí) gasta una de las conversaciones nuevas del día de ese número.

O deja que lo verifiquemos

import { Whatsapi } from "@whatsapi.sh/sdk";

const wa = new Whatsapi({ apiKey: "wa_your_key" });

const data = await wa.checkOtp({ to: "+5511988887777", code: "482913" });
200 OK
{ "data": { "verified": true, "to": "+5511988887777" } }

Un código equivocado o vencido es un 400 OTP_INVALID, nunca un 200 con verified: false. Un endpoint de verificación que responde 200 a un código equivocado está a un if olvidado de dejar entrar a cualquiera. Cinco intentos por código, y después se quema. Un código nuevo tiene 60 segundos de espera para reenviar.