Integra con SMSBlast.
Una API REST en autoservicio para enviar SMS y MMS y sincronizar bajas, más webhooks entrantes y plugins nativos.
Cuatro formas de conectar.
API REST
Envía SMS y MMS, prueba tu clave y da de baja contactos por HTTPS con la clave de API de tu organización.
Webhooks
Envía eventos a tu CRM, Zapier, n8n, Make o cualquier endpoint HTTPS que controles.
Plugin para WordPress
Integración nativa para sitios WordPress.
Plugin para Podio
Integración nativa para espacios de trabajo de Podio.
Acceso a la API en autoservicio.
Crea una cuenta gratis y luego obtén o rota tu clave de API en la aplicación, en Configuración → Integraciones (APIs). Sin contratos ni mensualidades por mensajería.
Mantén tu clave en secreto: cualquiera que la tenga puede enviar mensajes cobrados a tu cuenta. Rotar la clave invalida de inmediato la anterior.
Envía, da de baja y consulta tu cuenta.
URL base: https://app.smsblast.io. Cada solicitud se autentica con la clave de API de tu organización en el encabezado Authorization; las solicitudes sin ella reciben HTTP 401. Elige un endpoint y un lenguaje, y copia el ejemplo.
Enviar un SMS
Envía un texto (o un MMS con imagen) desde un número verificado que posees a un destinatario o hasta 100 a la vez. Los destinatarios dados de baja se omiten automáticamente.
Endpoint
POST /api/v2/sms/sendEncabezados
Authorization: Bearer YOUR_API_KEYContent-Type: application/json
Cuerpo de la solicitud
toNúmero de teléfono (cadena) o arreglo de números (máximo 100), en formato E.164.fromObligatorio. Tu número de teléfono verificado desde el que envías (formato E.164, p. ej. +18005551234).messageContenido del mensaje SMS (cadena). Admite {{firstName}} y otros marcadores, que se completan por destinatario desde su contacto.name(opcional) Nombre del contacto. Solo se aplica al enviar a un destinatario; establece y sobrescribe el nombre y apellido de ese contacto.mediaUrl(opcional) URL https pública de una imagen para enviar como MMS, adjunta a cada destinatario y cobrada a la tarifa de MMS. Las operadoras aceptan jpg, png, gif o webp de hasta 5MB.
Agrega {{firstName}}, {{lastName}}, {{email}}, {{address}}, {{city}}, {{state}} o {{zip}} a tu mensaje y cada destinatario recibe su propia versión, completada desde su registro de contacto. Tus campos personalizados también funcionan, por ejemplo {{acreage}}. Los campos vacíos quedan en blanco. Funciona igual que en campañas y envío rápido.
Por cumplimiento, cada mensaje enviado por la API incluye automáticamente "Reply STOP to unsubscribe" (solo se omite cuando tu texto ya tiene lenguaje de baja o es un código de un solo uso). Si tienes un caso especial en el que no debe agregarse, como notificaciones dentro de la app o alertas transaccionales, abre un ticket de soporte describiendo tu caso y nuestro equipo puede revisarlo para tu cuenta.
curl -X POST https://app.smsblast.io/api/v2/sms/send -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"to":"+15551234567","from":"+18005551234","message":"Hello from SMSBlast API!","name":"Jane Doe"}'const axios = require('axios');
axios.post('https://app.smsblast.io/api/v2/sms/send', {
to: '+15551234567',
from: '+18005551234',
message: 'Hello from SMSBlast API!',
name: 'Jane Doe'
}, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
})
.then(response => console.log(response.data))
.catch(error => console.error(error));<?php
$apiKey = 'YOUR_API_KEY';
$url = 'https://app.smsblast.io/api/v2/sms/send';
$data = [
'to' => '+15551234567',
'from' => '+18005551234',
'message' => 'Hello from SMSBlast API!',
'name' => 'Jane Doe'
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json'
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$result = json_decode($response, true);
print_r($result);Respuesta
{
"success": true,
"sent": 1,
"failed": 0,
"totalCost": "0.0150",
"results": [
{
"to": "+15551234567",
"status": "sent",
"messageSid": "SM...",
"segments": 1,
"cost": 0.015
}
]
}errors se incluye solo cuando algunos destinatarios no pudieron recibir el envío (por ejemplo, dados de baja), cada uno con un to y un motivo en error.
Respuestas de error
401Clave de API ausente o inválida.400Campo "from" ausente, número no encontrado o no verificado, o cuerpo de solicitud inválido.402Saldo insuficiente.
Dar de baja un contacto
Evita que un contacto reciba más mensajes. Se identifica por número de teléfono dentro de tu cuenta. Idempotente.
Endpoint
POST /api/v2/contacts/opt-outEncabezados
Authorization: Bearer YOUR_API_KEYContent-Type: application/json
Cuerpo de la solicitud
numberObligatorio. El número de teléfono del contacto (E.164, p. ej. +15551234567).
curl -X POST https://app.smsblast.io/api/v2/contacts/opt-out -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"number":"+15551234567"}'const axios = require('axios');
axios.post('https://app.smsblast.io/api/v2/contacts/opt-out', {
number: '+15551234567'
}, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
})
.then(response => console.log(response.data))
.catch(error => console.error(error));<?php
$apiKey = 'YOUR_API_KEY';
$ch = curl_init('https://app.smsblast.io/api/v2/contacts/opt-out');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['number' => '+15551234567']));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response, true));Respuesta
{
"success": true,
"optedOut": 1,
"alreadyOptedOut": false,
"number": "+15551234567"
}Devuelve 404 si ningún contacto coincide con el número. alreadyOptedOut es true cuando el contacto ya estaba dado de baja.
Respuestas de error
401Clave de API ausente o inválida.400Número ausente o inválido.404Ningún contacto de tu cuenta coincide con ese número.
Cuenta
Devuelve la información de tu cuenta, útil para confirmar que una clave de API funciona y revisar tu saldo y número remitente. Sin costo.
Endpoint
GET /api/v2/meEncabezados
Authorization: Bearer YOUR_API_KEY
curl https://app.smsblast.io/api/v2/me -H "Authorization: Bearer YOUR_API_KEY"const axios = require('axios');
axios.get('https://app.smsblast.io/api/v2/me', {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
})
.then(response => console.log(response.data))
.catch(error => console.error(error));<?php
$apiKey = 'YOUR_API_KEY';
$ch = curl_init('https://app.smsblast.io/api/v2/me');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $apiKey]);
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response, true));Respuesta
{
"id": "org_uuid",
"name": "Acme Inc",
"balance": 42.50,
"sender_number": "+18885551234",
"sender_status": "verified"
}Respuestas de error
401Clave de API ausente o inválida.
Los esquemas completos de solicitud y respuesta están en la especificación OpenAPI.
Webhooks de escucha.
Los webhooks de escucha son URLs a las que SMSBlast llama cuando algo ocurre en tu cuenta. Úsalos para enviar eventos a tu CRM, Zapier, n8n, Make o cualquier endpoint HTTPS que controles. Configúralos en Configuración → Integraciones (APIs) → Webhooks.
Webhook de mensajes entrantes
Se dispara cuando un contacto escribe a uno de tus números. Las palabras clave de baja (STOP, UNSUBSCRIBE) se omiten. SMSBlast envía por POST este payload a tu URL; los campos del contacto son null cuando no existen, y customFields es un objeto vacío si no tienes ninguno.
{
"from": "+15551234567",
"to": "+18005551234",
"message": "Hi, can you tell me more?",
"contact": {
"firstName": "Jane",
"lastName": "Doe",
"phone": "+15551234567",
"email": "jane@example.com",
"address": "123 Main St",
"city": "Austin",
"state": "TX",
"zip": "78701",
"customFields": { "interestedIn": "kitchen remodel" }
}
}Errores JSON estructurados.
Los errores devuelven un estado distinto de 2xx con un cuerpo JSON: una cadena error que indica qué falló y, cuando es útil, una cadena details que indica cómo corregirlo.
{ "error": "Missing API key", "details": "Provide \"Authorization: Bearer YOUR_API_KEY\" header." }| Estado | Significado |
|---|---|
400 | Solicitud incorrecta: from ausente o inválido, remitente no verificado o de solo respuesta, cuerpo o mediaUrl inválidos, o más de 100 destinatarios. |
401 | Clave de API ausente o inválida. |
402 | Saldo insuficiente para el envío. |
404 | Ningún contacto coincide con el número (baja). |
429 | Límite de solicitudes alcanzado. Reduce el ritmo y reintenta. |
500 | Error del servidor. |
Recursos legibles por máquina.
- /openapi.json: Especificación OpenAPI 3.1 de la API de SMSBlast, incluido el webhook entrante.
- /llms.txt: Resumen legible por IA de SMSBlast con enlaces a cada página clave.
- /sitemap.xml: Todas las páginas indexables, en inglés y español.
- /developers.md: Esta página en markdown. Otras versiones: /index.md, /pricing.md, /faq.md, /features.md, /about.md
Envía Accept: text/markdown a /, /pricing, /faq, /features, /developers o /about para recibir la versión en markdown directamente; las respuestas incluyen Vary: Accept. Las rutas desconocidas devuelven un HTTP 404 real; bajo /api/ y /docs/ en este sitio, pide application/json o text/markdown para recibir un cuerpo 404 estructurado.
Envía con responsabilidad.
SMSBlast es únicamente una plataforma de envío. Todo lo que envíes por la API debe ir a contactos que dieron el consentimiento adecuado, y tu comunicación debe cumplir con todas las leyes aplicables, incluidas TCPA, CAN-SPAM y los requisitos A2P 10DLC. Lee las guías de cumplimiento.
Listo. Ya. Envía.
Crea tu cuenta gratis y lanza tu primera campaña. Sin contratos, sin compromisos.
Comienza, es gratis