¡Hagamos que vivas con OTP ultrarrápidas!

Pasarás de «recién registrarte» a «enviar OTP como un profesional» en unos pocos pasos rápidos.

API Verify Now

Documentación de la API OTP SMS

Versión — 3.0
tick-icon

Paso 1: Registrarse e iniciar sesión

  1. Ir al registro de Message Central
  2. Crea tu cuenta gratuita
  3. Usa tus créditos gratuitos para probar y jugar con las OTP
📌 Consejo: Usa tus créditos gratuitos para enviar las OTP de prueba inmediatamente antes de lanzarlas.
tick-icon

Paso 2: Integración de API (¡desarrolladores, ensamblados!)

Hemos mantenido las cosas muy sencillas. Copia algunos fragmentos de código y lo probarás en poco tiempo.

¿Prefieres ver antes que programar? ¿Nuestro guía rápida de vídeo lo tiene todo cubierto.

Parámetro de API para Verify Now

Los siguientes parámetros deben enviarse al usar las API VerifyNow.

Parámetro de API
Tipo
Valor
Tipo de flujo
Cuerda
SMS/WHATSAPP/
RCS/SAUTH
tipo
Cuerda
PARTE SUPERIOR

URL base de API Rest

Todos los puntos finales de la API de la plataforma que aparecen a continuación deben tener como prefijo la siguiente URL:

https://cpaas.messagecentral.com

Generar token

Al usar la API de verificación por SMS de Verify Now para enviar códigos de verificación por SMS, la llamada inicial debe ser a la API de generación de tokens.

Esta API devuelve un token que debe incluirse en todas las llamadas posteriores. Se necesita un token de autenticación para validar al usuario y debe incluirse en la sección de encabezado de cada solicitud.

Campo
Tipo
¿Obligatorio?
Descripción
ID de cliente
Cuerda
sí
Identificador de cliente (es necesario regístrate para obtener tu identificador de cliente)
campo
Cuerda
no
Código de país al que enviar OTP
correo electrónico
Cuerda
no
Correo electrónico
clave
Cuerda
sí
Contraseña cifrada en base 64
alcance
Cuerda
no
Usa «NUEVO» por primera vez

Ruta URL de solicitud:

/auth/v1/authentication/token

cURL

1curl --location 'https://cpaas.messagecentral.com/auth/v1/authentication/token? 
2customerId=%3CCustomerId%3E&key=%3CBase64%20Encrypted%20password%3E&scope=NEW&country=91
3&email=test%40messagecentral.com' \
4--header 'accept: */*'

‍

NOTA: Para convertir un comando cURL en código con Postman, abre Postman, importa el comando cURL mediante el botón «Importar» y, a continuación, genera el código en tu idioma preferido haciendo clic en el botón «Código» situado a la derecha de la solicitud.

Respuesta JSON

1{
2  "status": Integer,
3  "token": "String"
4}

Ejemplo de código

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://cpaas.messagecentral.com/auth/v1/authentication/token?customerId=<CustomerId>&key=<Base64 Encrypted password>&scope=NEW&country=91&email=test@messagecentral.com")
  .method("GET", body)
  .addHeader("accept", "*/*")
  .build();
Response response = client.newCall(request).execute();
var request = require('request');
var options = {
  'method': 'GET',
  'url': 'https://cpaas.messagecentral.com/auth/v1/authentication/token?customerId=<CustomerId>&key=<Base64 Encrypted password>&scope=NEW&country=91&email=test@messagecentral.com',
  'headers': {
    'accept': '*/*'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://cpaas.messagecentral.com/auth/v1/authentication/token?customerId=<CustomerId>&key=<Base64 Encrypted password>&scope=NEW&country=91&email=test@messagecentral.com');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'accept' => '*/*'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
import requests

url = "https://cpaas.messagecentral.com/auth/v1/authentication/token?customerId=<CustomerId>&key=<Base64 Encrypted password>&scope=NEW&country=91&email=test@messagecentral.com"

payload = {}
headers = {
  'accept': '*/*'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
require "uri"
require "net/http"

url = URI("https://cpaas.messagecentral.com/auth/v1/authentication/token?customerId=<CustomerId>&key=<Base64 Encrypted password>&scope=NEW&country=91&email=test@messagecentral.com")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["accept"] = "*/*"

response = https.request(request)
puts response.read_body

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://cpaas.messagecentral.com/auth/v1/authentication/token?customerId=<CustomerId>&key=<Base64 Encrypted password>&scope=NEW&country=91&email=test@messagecentral.com");
request.Headers.Add("accept", "*/*");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

Enviar OTP

Para enviar OTP a un número de teléfono móvil, a continuación se muestran los parámetros de solicitud. El token de autenticación es necesario para enviar la OTP, que es generada por la API de tokens generada (que puedes encontrar más arriba en la sección Introducción).

Parámetro de API
Tipo
¿Obligatorio?
Token de autenticación
Cuerda
Sí

Ruta URL de solicitud:‍

Una respuesta correcta devolverá un código de estado 200.

/verification/v3/send

Parámetros de URL de solicitud:‍

Campo
Tipo
¿Obligatorio?
Descripción
ID de cliente
Cuerda
sí
Código de país
Longitud máxima
Entero
no
Envía un número entre 4 y 8. El valor predeterminado es 4
Número de móvil
Cuerda
sí
Número de teléfono móvil para texto único
Tipo de flujo
Cuerda
sí
Enviamos OTP utilizando varios medios como SMS, WhatsApp, correo electrónico, etc. Por ahora, usa SMS o WhatsApp

cURL

1curl --location --request POST 'https://cpaas.messagecentral.com/verification/v3/send? 
2countryCode=91&flowType=SMS&mobileNumber=9999999999' \
3--header 'authToken: 
4eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDLTMzNDMyQTVGNDIGNzQwNCI6ImIhdCI6MTcxMjExOTA0MCwiZXhwIjo'

‍

NOTA: Para convertir un comando cURL en código con Postman, abre Postman, importa el comando cURL mediante el botón «Importar» y, a continuación, genera el código en tu idioma preferido haciendo clic en el botón «Código» situado a la derecha de la solicitud. Puedes cambiar el FlowType según el canal que elijas.

Respuesta JSON

1{
2  "responseCode": 200,
3  "message": "SUCCESS",
4  "data": {
5    "verificationId": "xxxx",
6    "mobileNumber": "xxxx",
7    "responseCode": "200",
8    "errorMessage": null,
9    "timeout": "60",
10    "smCLI": null,
11    "transactionId": "xxxx"
12  }
13}

Ejemplo de código

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999")
  .method("POST", body)
  .addHeader("authToken", "eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw")
  .build();
Response response = client.newCall(request).execute();
var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999',
  'headers': {
    'authToken': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'authToken' => 'eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
import requests

url = "https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999"

payload = {}
headers = {
  'authToken': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
require "uri"
require "net/http"

url = URI("https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["authToken"] = "eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw"

response = https.request(request)
puts response.read_body
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999");
request.Headers.Add("authToken", "eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

Validar OTP

El método validateOTP es un punto final de la API REST para validar una contraseña de un solo uso (OTP) para los clientes.

Encabezado de solicitud
Tipo
¿Obligatorio?
Token de autenticación
Cuerda
Sí

Ruta URL de solicitud:

Una respuesta correcta devolverá un código de estado 200.

/verification/v3/validateOtp/
Campo
Tipo
¿Obligatorio?
Descripción
ID de verificación
Larga
sí
ID de verificación de la respuesta de la API /send
código
Cuerda
sí
parte superior
lánguido
Cuerda
no
Número de teléfono móvil para texto único
Tipo de flujo
Cuerda
sí
  • Para soporte en varios idiomas
  • por defecto es inglés
  • Por ahora, solo admitimos inglés

cURL

1curl --location 'https://cpaas.messagecentral.com/verification/v3/validateOtp? 
2&verificationId=2949&code=1476' \
3--header 'authToken: 
4eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDLTMzNDMyQTVGNDIGNzQwNCI6ImIhdCI6MTcxMjExOTA0MC'

‍

NOTA: Para convertir un comando cURL en código con Postman, abre Postman, importa el comando cURL mediante el botón «Importar» y, a continuación, genera el código en tu idioma preferido haciendo clic en el botón «Código» situado a la derecha de la solicitud.

Respuesta JSON

Una respuesta correcta devolverá un código de estado 200.

1{
2  "responseCode": 200,
3  "message": "SUCCESS",
4  "data": {
5    "verficationId": "xxxx",
6    "mobileNumber": "xxxx",
7    "responseCode": "200",
8    "errorMessage": null,
9    "verificationStatus": "VERIFICATION_COMPLETED",
10    "authToken": null,
11    "transactionId": "xxxx"
12  }
13}

Ejemplo de código

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://cpaas.messagecentral.com/verification/v3/validateOtp?&verificationId=2949&code=1476")
  .method("GET", body)
  .addHeader("authToken", "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOT")
  .build();
Response response = client.newCall(request).execute();
var request = require('request');
var options = {
  'method': 'GET',
  'url': 'https://cpaas.messagecentral.com/verification/v3/validateOtp?&verificationId=2949&code=1476',
  'headers': {
    'authToken': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOT'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://cpaas.messagecentral.com/verification/v3/validateOtp?&verificationId=2949&code=1476');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'authToken' => 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOT'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://cpaas.messagecentral.com/verification/v3/validateOtp?&verificationId=2949&code=1476");
request.Headers.Add("authToken", "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOT");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

require "uri"
require "net/http"

url = URI("https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["authToken"] = "eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw"

response = https.request(request)
puts response.read_body
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999");
request.Headers.Add("authToken", "eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

Códigos de respuesta

Código
Mostrar texto
200
ÉXITO
400
SOLICITUD INCORRECTA
409
RECURSO_DUPLICADO
500
ERROR_SERVIDOR
501
ID_DE CLIENTE NO VÁLIDO
505
ID_DE VERIFICACIÓN NO VÁLIDO
506
LA SOLICITUD YA EXISTE
511
CÓDIGO_DE_PAÍS NO VÁLIDO
700
VERIFICACIÓN_FALLIDA
702
WRONG_OTP_PROVIDED
703
YA_VERIFICADO
705
VERIFICACIÓN_CADUCADA
800
LÍMIT_MÁXIMO_ALCANZADO

¿Necesitas ayuda?

¿Necesitas una mano? Nuestros expertos están disponibles las 24 horas del día, los 7 días de la semana para guiarlo en cualquier momento y en cualquier momento.

Correo electrónico de soporte: support@messagecentral.com

Preguntas frecuentes

1. ¿Cómo puedo implementar con código personalizado?

Puedes usar postman para reescribir las llamadas a la API en tu lenguaje de programación preferido. Tendrías que usar: -

  • Método POST para enviar SMS
  • Método GET para validar SMS OTP

2. ¿Por qué aparece el error «Método no permitido» o el código de error 405?

Debes asegurarte de que la URL del punto final de la API de token coincida con la definida en la documentación. Lo mismo se menciona a continuación: -

a. API de token mediante el método GET

b. Enviar API mediante el método POST

c. Validar la API mediante el método GET



3. ¿Cómo pruebo las API de verificación por SMS?

Puedes usar Postman para probar las API de verificación de SMS de Message Central.

4. ¿Por qué aparece la página «Error de etiqueta blanca»?

Si aparece la página de error de etiqueta blanca, debe comprobar si hay los siguientes errores: -

a. Estás utilizando un paquete de API incorrecto

b. No ha sustituido los marcadores de posición por los valores reales

c. La curva de la API es incorrecta

d. La ubicación de Curl no se ha cambiado a «producción» en lugar de «puesta en escena»

5. ¿Por qué aparece el código de error 401?

Esto puede deberse a que la API o el token son incorrectos. Asegúrese de haber seguido nuestra documentación de API para conocer los valores correctos de los tokens.

6. ¿Por qué aparece el código de error 400 o «Solicitud incorrecta» en Postman?

Hay varias razones para una «solicitud incorrecta» en Postman. Puedes comprobar los siguientes motivos probables: -

a. Compruebe si el AuthToken es correcto

b. Compruebe si falta algún parámetro en la API

c. El encabezado debe pasarse en este formato: application-x-www-form-urlencoded

7. ¿Cómo puedo generar AuthToken?

Para generar el AuthToken en Postman, debes: -

a. Busque una «clave» en la API GET

b. Tendrías que copiar esa clave y codificar la misma usando Base64 - https://www.base64encode.org/

‍c. Coloque la contraseña codificada en el marcador de posición «Clave»

d. Pulsa la API GET

Obtendrías un AuthToken.

8. ¿Dónde uso el AuthToken?

Deberás poner el authToken en el encabezado de la API SEND.

9. ¿Qué marcadores de posición debo cambiar en la API GET para generar el token?

Deberás cambiar el país, la identificación del cliente, el correo electrónico y la clave. El alcance siempre será igual a = «NUEVO»

Campo
Tipo
¿Obligatorio?
Descripción
ID de cliente
Cuerda
sí
Identificador de cliente (es necesario regístrate para obtener tu identificador de cliente)
clave
Cuerda
sí
Contraseña cifrada en base 64

10. ¿Qué marcadores de posición debo cambiar en la API SEND?

Deberás cambiar el código de país, la identificación del cliente, la longitud del límite y el número de teléfono móvil.

Campo
Tipo
¿Obligatorio?
Descripción
ID de cliente
Cuerda
sí
Código de país
Tipo de flujo
Cuerda
sí
Enviamos OTP utilizando varios medios como SMS, WhatsApp, correo electrónico, etc. Por ahora, usa SMS o WhatsApp

¿Cuál es la mejor API de OTP por SMS para India en fiabilidad de entrega y latencia?

Busca un proveedor de API de OTP por SMS que ofrezca rutas directas de operador, peering regional con operadores, reintentos/fallback automáticos y SLA de entrega medibles. Los mejores proveedores también admiten cumplimiento DLT, informes de entrega (DLR), enrutamiento de baja latencia y fallback de SMS + WhatsApp. Evalúalos midiendo las tasas de entrega reales, la latencia media (ms) y el desglose de errores en los principales operadores indios (Jio, Airtel, Vi).

¿Qué velocidad de entrega de OTP se necesita en apps indias y qué afecta a la latencia?

Apunta a una entrega en menos de 2 segundos para la mejor experiencia (menos de 5 s es aceptable). La latencia depende del enrutamiento del operador, las colas en horas punta, la congestión de la red, los saltos entre agregadores de SMS y los retrasos de DLT/plantillas. Usa rutas directas, enrutamiento en paralelo y fallback integrado de SMS + WhatsApp para reducir al mínimo la latencia de extremo a extremo y aumentar la tasa de verificación completada.

¿Cómo integro una API de OTP por SMS en mi app en India (Node.js, Python, PHP, Java)?

Flujo básico: genera un OTP seguro → llama a la API de envío de OTP del proveedor → guarda el hash del OTP + su caducidad → verifica la entrada del usuario contra el hash guardado mediante la API/webhook de verificación. La mayoría de proveedores ofrecen endpoints REST y SDK de verificación por OTP. Ejemplo (pseudocódigo):
Node.js (fetch):
await fetch('https://api.provider/send', {  
method:'POST',  
headers:{'Authorization':'Bearer KEY','Content-Type':'application/json'},  
body: JSON.stringify({to:'+91XXXXXXXXXX', template:'OTP {{code}}',
variables:{code:123456}}) });
Usa HTTPS, HMAC/firmas, reintentos y webhooks para los informes de entrega (DLR).

¿Cómo evito el abuso de reenvíos de OTP o los ataques de fuerza bruta en mi flujo de autenticación?

Aplica protecciones en el servidor:

  • Limita los reenvíos por teléfono y por periodo de tiempo (p. ej., 3 envíos / 10 minutos).
  • Limita los intentos de verificación y añade esperas progresivas o bloqueos temporales tras los fallos.
  • Usa huella digital de dispositivo + IP y CAPTCHA en los flujos sospechosos.
  • Bloquea la cuenta o exige una verificación adicional tras N intentos fallidos. Registra los intentos y avisa al equipo de seguridad.

¿Qué causa los fallos de entrega de OTP en India y cómo los solucionan los desarrolladores?

Causas habituales: rechazo de DLT/plantillas, filtrado del operador (DND), enrutamiento deficiente, sender ID incorrecto, formato de número erróneo o caídas temporales del operador. Soluciones: asegura las aprobaciones de DLT y plantillas, usa el formato E.164 correcto (+91), reintenta por rutas alternativas, activa el fallback por SMS, supervisa los DLR y elige un proveedor con relación directa con los operadores.

¿Cómo pruebo las APIs de OTP en modo sandbox sin enviar SMS reales?

Usa el sandbox o las claves de prueba del proveedor para simular envíos y confirmaciones. El sandbox suele devolver DLR y respuestas de verificación simuladas. En local, simula las respuestas de la API en las pruebas unitarias y usa credenciales de staging para el QA de extremo a extremo. Valida siempre los webhooks en staging (con herramientas como ngrok) y registra todos los eventos para reproducirlos en las pruebas.

¿Cómo implemento la limitación de frecuencia y la lógica de reintentos para el envío de OTP?

Limitación de frecuencia: aplica límites por teléfono y por IP en el API gateway (p. ej., 3 envíos cada 10 min). Lógica de reintentos: usa backoff exponencial para errores transitorios y reintento inmediato por una ruta alternativa para fallos leves. Pon siempre un tope a los reintentos (p. ej., 3 intentos) y registra sus resultados para evitar spam o bloqueos del operador.

¿Puedo usar un Sender ID alfanumérico para OTP en India?

No: India exige Sender IDs numéricos a través de rutas aprobadas por DLT para la mayoría de flujos transaccionales; los alfanuméricos no suelen permitirse para OTP. Los OTP deben cumplir las normas de telecomunicaciones/DLT. Usa un proveedor que gestione por ti el registro DLT y la configuración del Sender ID numérico.

¿Qué caducidad de OTP y ciclo de reintentos se recomiendan para usuarios en India?

Caducidad: 3–5 minutos es lo habitual para OTP transaccionales (2FA). Ciclo de reintentos: permite 1–2 reenvíos inmediatos con límites antiabuso (p. ej., máximo 3 envíos cada 10–15 minutos). Las caducidades cortas reducen el fraude; unos límites de reenvío razonables reducen la carga de soporte y el filtrado de los operadores.

¿Qué diferencia hay entre las rutas de OTP Transaccionales y Service Implicit?

Las rutas Transaccionales son para mensajes críticos y esperados (OTP, actualizaciones de pedidos), siguen normas de cumplimiento más estrictas y suelen tener mayor prioridad de entrega. Las rutas Service Implicit (u otras rutas de servicio) pueden variar según el operador y suelen aplicar otras reglas de plantillas/consentimiento. Consulta la documentación de enrutamiento de tu proveedor y elige rutas transaccionales para los OTP para maximizar la entregabilidad y el cumplimiento.

¿Cómo migro de otro proveedor de SMS a una nueva API de OTP sin tiempo de inactividad?

Planifica una transición por fases:

  • Configura el nuevo proveedor y prepara DLT/plantillas en paralelo.
  • Replica el tráfico (envía lotes de prueba) y verifica las métricas de entrega.
  • Aplica envío doble a un pequeño porcentaje del tráfico real (A/B) y supervisa los resultados.
  • Traslada el tráfico poco a poco manteniendo el proveedor anterior como respaldo.
  • Actualiza los endpoints de DNS/webhooks y revoca las claves antiguas cuando todo esté estable. Supervisa de cerca los registros y las tasas de entrega.

¿Estás listo para empezar?

Proteja sus cuentas de usuario y genere confianza con sus clientes mediante la verificación por SMS. Prueba Verify Now sin ninguna tarjeta de crédito.