Webhooks
Suscripción y gestión de webhooks: la URL de tu servidor a la que SMS Masivos envía la confirmación de entrega de tus mensajes y las respuestas de tus clientes.
Estos endpoints solo configuran tu webhook. Los eventos que después recibirá tu servidor (payloads, códigos de estatus y reintentos) están documentados en la guía de Webhooks.
Obtener Configuración de Webhook
POST /webhook/get
Registrar Webhook
POST /webhook/add
Cambiar Estado de Webhook
POST /webhook/status
Eliminar Webhook
POST /webhook/delete
Obtener Configuración de Webhook
POST https://api.smsmasivos.com.mx/webhook/get
Devuelve la URL y estado actual del webhook configurado en la cuenta
curl https://api.smsmasivos.com.mx/webhook/get
const Webhook = await sms.webhooks.create()
Webhook = sms.webhooks.create()Webhook, err := client.Webhooks.Create(ctx, nil)
Response
{ "success": true, "result": { "url": "https://example.com/webhook", "status": "1" }, "status": 200, "code": "webhook_01" }
{ "success": false, "message": "Parámetros inválidos.", "status": 400, "code": "<string>" }
{ "success": false, "message": "API Key inválida o no existe.", "status": 401, "code": "auth_05" }
{ "success": false, "message": "La dirección IP no está autorizada para acceder.", "status": 403, "code": "auth_04" }
{ "success": false, "message": "Demasiadas solicitudes. Límite: 100 mensajes/segundo (producción) o 100/día (sandbox).", "status": 429, "code": "rate_01" }
{ "success": false, "message": "Error interno del servidor. Contacta a soporte con el request_id.", "status": 500, "code": "server_01", "request_id": "550e8400-e29b-41d4-a716-446655440000" }
Registrar Webhook
POST https://api.smsmasivos.com.mx/webhook/add
Registra una nueva URL de webhook para recibir notificaciones de eventos (envíos, DLR, respuestas).
Parameters
urlstringrequerido
URL pública del webhook (se recomienda HTTPS). No se aceptan hosts locales ni redes privadas. Se verifica con una petición
GET al registrarla.statusenumrequerido
Estado del webhook:
'0' = deshabilitado, '1' = habilitado01curl -X POST https://api.smsmasivos.com.mx/webhook/add \
-H "Content-Type: application/json" \
-H "apikey: TU_API_KEY" \
-d '{"url": "https://miapp.com/webhooks/sms-masivos", "status": "1"}'
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.smsmasivos.com.mx/webhook/add');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'apikey: ' . getenv('SMSMASIVOS_API_KEY')
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'url' => 'https://miapp.com/webhooks/sms-masivos',
'status' => '1'
]));
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
response = requests.post(
'https://api.smsmasivos.com.mx/webhook/add',
headers={'Content-Type': 'application/json', 'apikey': 'TU_API_KEY'},
json={'url': 'https://miapp.com/webhooks/sms-masivos', 'status': '1'}
)
print(response.json())
const response = await fetch('https://api.smsmasivos.com.mx/webhook/add', {
method: 'POST',
headers: {'Content-Type': 'application/json', 'apikey': process.env.SMSMASIVOS_API_KEY},
body: JSON.stringify({url: 'https://miapp.com/webhooks/sms-masivos', status: '1'})
});
const data = await response.json();
console.log(data);
require 'net/http'; require 'json'
uri = URI('https://api.smsmasivos.com.mx/webhook/add')
http = Net::HTTP.new(uri.host, uri.port); http.use_ssl = true
request = Net::HTTP::Post.new(uri.path, {'Content-Type' => 'application/json', 'apikey' => ENV['SMSMASIVOS_API_KEY']})
request.body = {url: 'https://miapp.com/webhooks/sms-masivos', status: '1'}.to_json
response = http.request(request)
puts JSON.parse(response.body)
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("apikey", "TU_API_KEY");
var payload = new { url = "https://miapp.com/webhooks/sms-masivos", status = "1" };
var response = await client.PostAsJsonAsync("https://api.smsmasivos.com.mx/webhook/add", payload);
var result = await response.Content.ReadFromJsonAsync<JsonElement>();
Console.WriteLine(result);
OkHttpClient client = new OkHttpClient();
String json = "{\"url\":\"https://miapp.com/webhooks/sms-masivos\",\"status\":\"1\"}";
Request request = new Request.Builder()
.url("https://api.smsmasivos.com.mx/webhook/add")
.post(RequestBody.create(json, MediaType.parse("application/json")))
.addHeader("apikey", "TU_API_KEY").build();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
Response
{ "success": true, "message": "url_added_success", "status": 200, "code": "add_webhook_01" }
{ "success": false, "message": "Parámetros inválidos.", "status": 400, "code": "<string>" }
{ "success": false, "message": "API Key inválida o no existe.", "status": 401, "code": "auth_05" }
{ "success": false, "message": "La dirección IP no está autorizada para acceder.", "status": 403, "code": "auth_04" }
{ "success": false, "message": "Demasiadas solicitudes. Límite: 100 mensajes/segundo (producción) o 100/día (sandbox).", "status": 429, "code": "rate_01" }
{ "success": false, "message": "Error interno del servidor. Contacta a soporte con el request_id.", "status": 500, "code": "server_01", "request_id": "550e8400-e29b-41d4-a716-446655440000" }
Cambiar Estado de Webhook
POST https://api.smsmasivos.com.mx/webhook/status
Activa o desactiva el webhook configurado
Parameters
statusstringrequerido
Estado del webhook:
'0' = deshabilitado, '1' = habilitadocurl https://api.smsmasivos.com.mx/webhook/status \ -d status=value
const Webhook = await sms.webhooks.create({ status: 'value', })
Webhook = sms.webhooks.create( status="value", )
Webhook, err := client.Webhooks.Create(ctx, &sms.WebhookParams{ Status: sms.String("value"), })
Response
{ "success": true, "message": "url_added_success", "status": 200, "code": "add_webhook_01" }
{ "success": false, "message": "Parámetros inválidos.", "status": 400, "code": "<string>" }
{ "success": false, "message": "API Key inválida o no existe.", "status": 401, "code": "auth_05" }
{ "success": false, "message": "La dirección IP no está autorizada para acceder.", "status": 403, "code": "auth_04" }
{ "success": false, "message": "Demasiadas solicitudes. Límite: 100 mensajes/segundo (producción) o 100/día (sandbox).", "status": 429, "code": "rate_01" }
{ "success": false, "message": "Error interno del servidor. Contacta a soporte con el request_id.", "status": 500, "code": "server_01", "request_id": "550e8400-e29b-41d4-a716-446655440000" }
Eliminar Webhook
POST https://api.smsmasivos.com.mx/webhook/delete
Elimina la URL y estado del webhook configurado
curl https://api.smsmasivos.com.mx/webhook/delete
const Webhook = await sms.webhooks.create()
Webhook = sms.webhooks.create()Webhook, err := client.Webhooks.Create(ctx, nil)
Response
{ "success": true, "message": "url_added_success", "status": 200, "code": "add_webhook_01" }
{ "success": false, "message": "Parámetros inválidos.", "status": 400, "code": "<string>" }
{ "success": false, "message": "API Key inválida o no existe.", "status": 401, "code": "auth_05" }
{ "success": false, "message": "La dirección IP no está autorizada para acceder.", "status": 403, "code": "auth_04" }
{ "success": false, "message": "Demasiadas solicitudes. Límite: 100 mensajes/segundo (producción) o 100/día (sandbox).", "status": 429, "code": "rate_01" }
{ "success": false, "message": "Error interno del servidor. Contacta a soporte con el request_id.", "status": 500, "code": "server_01", "request_id": "550e8400-e29b-41d4-a716-446655440000" }
Objeto de respuesta
Estructura de la respuesta que devuelven estos endpoints.
Atributos
successboolean
—
resultobject
—
statusinteger
—
codestring
Código de respuesta
Objeto de respuesta
{ "success": true, "result": {}, "status": 200, "code": "webhook_01" }