Webhooks

Suscripción y gestión 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

The Webhook object

Returned by the webhooks endpoints.

Attributes
successboolean
resultobject
statusinteger
codestring
Código de respuesta
The Webhook object
{
  "success": true,
  "result": {},
  "status": 200,
  "code": "webhook_01"
}

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": "API Key inválida o no existe.",
  "status": 401,
  "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
urlstringrequired
URL del webhook (debe ser HTTPS válida)
statusenumrequired
Estado del webhook: '0'=deshabilitado, '1'=habilitado01
curl -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": "API Key inválida o no existe.",
  "status": 401,
  "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
statusstringrequired
Webhook status: '0'=disabled, '1'=enabled
curl 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": "API Key inválida o no existe.",
  "status": 401,
  "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": "API Key inválida o no existe.",
  "status": 401,
  "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"
}