ZPK SMS
API de ZPK para enviar SMS a dispositivos móviles. Soporte para 216 países y envíos programables.
Con la API SMS de ZPK Systems puede enviar mensajes de texto SMS a cualquier dispositivo móvil. Amplia red global de distribución, posibilidad de envío en franjas horarias, y un precio por SMS inmejorable.
Conectando a la API
Servidor y protocolos para la conexión
Servidor: | https://zpk.systems |
---|---|
Esquema: | HTTPS, solo conexiones seguras SSL. |
Protocolo: |
JSON recomendado
Enviando un JSON en el body del request, y especificando una cabecera Content-Type: application/json en el request Si envia ficheros como imágenes o documentos, estos deberán estar codificados en base64. Form-Data no recomendado
Formato usado en los formularios web, no recomendado. Al enviar una solicitud tipo form_data puede enviar todos los campos como parámetros POST separados. Sin embargo si la solicitud es muy grande recomendamos que envie el contenido de la peticion en un único campo de texto llamado _json (con un guión bajo). Este parametro especial sera procesado por nuestro backend como si se tratase de una solicitud JSON habitual. |
El servidor dónde enviar las solicitudes es https://zpk.systems mediante una conexión HTTPS segura.
El tipo de comunicación recomendado es JSON, en cuyo caso especificaremos en la conexión un Content-Type: application/json, y enviaremos el body de la solicitud como un string JSON válido.
Enviando un SMS
Parámetro | Descripción | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
application_id |
alfanumérico requerido Una id de aplicación, puede obtener la id de una aplicación haciendo click en 'detalles' en su panel |
||||||||||||
api_key |
alfanumérico requerido La API KEY de la aplicación que efectúa la llamada a esta API, puede obtenerla en su panel, haciendo click en 'detalles' de una aplicación |
||||||||||||
messages |
array requerido Max: 1000 Un array que contiene uno o mas mensajes SMS a enviar.
|
||||||||||||
concatenate |
boleano opcional Por defecto false. Si se establece los mensajes que superen la longitud de texto máxima se enviarán como varios SMS concatenados. |
||||||||||||
encoding |
alfanumérico opcional La codificación de caracteres del SMS. Por defecto se usará GSM7 , que permite un envío de 160 caracteres sin acentos ni caracteres especiales como emojis. La otra opción disponible es UCS2, que disminuirá la longitud máxima de sms a 70 caracteres pero permite enviar caracteres especiales. |
||||||||||||
callback_url |
alfanumérico URL opcional Una URL de notificación, donde ZPK Systems informará del estado de entrega de los SMS La URL de notificacion recibe una lista de hasta 1000 envíos, su servidor deberá responder con un código de respuesta 200. Si su servidor no responde con un código 200 por problemas técnicos, nuestros servidores volverán a intentar notificar esta comunicación cada 30 minutos, durante un máximo de 72 horas. |
Respuestas del servidor
El servidor retornará un JSON, con un boleano success si la solicitud de envío se procesó correctamente.
Adicionalmente en el JSON se retornará la lista de los SMS enviados, con un parámetro success indicando si ese mensaje en concreto pudo ser entregado o no.
Cada mensaje dispone además de un código sms_id que identifica ese SMS en concreto. Este código es usado posteriormente en los envíos de informes de estado.
Como en el resto de las peticiones a APIS de ZPK Systems, se dispone un parámetro cost indicando el coste total de la solicitud a la API.
Ejemplo de respuesta con envío correcto.
{
"success": true,
"messages": [
{
"from": "El sitio web",
"phone": "+34 000000",
"message": "El mensaje enviado",
"success": true,
"sms_id": "f205d6e838ec4110992a4a871a74d279"
}
],
"cost": 0.02485
}
Ejemplo de respuesta con algunos mensajes incorrectos.
Ejemplo con un envío correcto, que sin embargo contenía un número de destino incorrecto.
{
"success": true,
"messages": [
{
"from": "El sitio web",
"phone": "+34 000000",
"message": "El mensaje enviado",
"success": true,
"sms_id": "f205d6e838ec4110992a4a871a74d279"
},
{
"from": "YourName",
"phone": "+34 NotValidPhone :)",
"message": "El mensaje a enviar...",
"success": false,
"sms_id": "",
"error_id": "INVALID_DESTINATION",
"error_msg": "SMS parameter 'to' must be a number in international format, between 7 and 15 digits."
}
],
"cost": 0.02485
}
Ejemplo de respuesta con error general
Ejemplo con un envío incorrecto que NO será procesado.
{
"success": false,
"errors": [
{
"id": "INVALID_PARAMETER",
"message": "Messages array is empty.",
"on": "messages"
}
]
}
Consultar precios de envío actuales
Los precios de envío de un SMS pueden ser consultados en este endpoint.
Podemos opcionalmente filtrar los precios por código ISO2 de país, o por extensión de teléfono.
Endpoint de consulta
Parámetro | Descripción |
---|---|
application_id |
alfanumérico requerido Una ID de aplicación, puede obtener la id de una aplicación haciendo click en 'detalles' en su panel |
api_key |
alfanumérico requerido La API KEY de la aplicación que efectúa la llamada a esta API, puede obtenerla en su panel, haciendo click en 'detalles' de una aplicación |
country_code |
alfanumérico opcional Si se facilita este parámetro opcional, se retornaran solo las tarifas cuyo país de destino coincida. Debe ser un código ISO2, por ejemplo es para España, o us para Estados Unidos. |
prefix |
alfanumérico opcional Si se facilita este parametro opcional, se retornarán solo las tarifas cuyo prefijo internacional coincida. |
Si no se especifica country_code ni prefix se retornarán todas las tarifas disponibles.
Respuesta
{
"success": true,
"prices": [
{
"country_code": "AB",
"prefix": "7",
"network_name": "Other",
"price": 0.0652
},
{
"country_code": "AB",
"prefix": "7",
"network_name": "Aquafon",
"price": 0.0652
},
{
"mas tarifas": "...."
}
],
"cost": 0.02485
}
Callbacks de Notificación
Reciba informes con el estado de cada mensaje en su servidor
Solicitando notificación
Si al hacer una solicitud de envío se establece el parámetro callback_url ZPK notificará a su servidor el estado del envío de SMS cuando tenga una respuesta del operador.
Esta respuesta puede tardar entre unos pocos segundos, y hasta 48 horas, dependiendo del operador de destino.
El envío se realiza mediante una comunicación JSON.
{
"application_id": "app234234",
"api_key": "DSFJnn3JLdfdfs",
"callback_url": "https://miservidor.com/zpk_sms_callback",
"messages":[
{
"from": "TEST",
"phone": "600568046",
"message": "Test de envío con callback"
}
]
}
Recibiendo notificaciones
Cuando el SMS sea entregado o rechazado por el operador, ZPK enviará una notificación JSON a su servidor con un array de resultados de envío.
[
{
"sms_id":"537b7194d5804ad9b1afead36f3d5e16",
"from":"YourName",
"phone":"+34600000000",
"message":"El mensaje a enviar...",
"generated_at":"2023-07-16 06:59:49",
"status":"delivered",
"delivered_at":"2023-07-16 06:59:59"
}
]
sms_id | Un identificador único del SMS envíado |
from | El origen que usted especificó al solicitar el envío. |
phone | El número de teléfono del destinatario |
message | El mensaje que solicitó enviar |
generated_at | La fecha en que se solicitó el envío |
status |
El estado actual del mensaje, que puede ser:
|
delivered_at | La fecha en que el mensaje de texto fue entregado al dispositivo destino |
Su servidor debe responder con un código HTTP/200, cualquier otro código se interpretará como un error temporal en su servidor, y ZPK reintentará la notificación cada 25 minutos durante un máximo de 56 horas.
Precios
Esta API se factura por demanda, y usted solo pagará según el número de SMS enviados. No hay descuentos por volumen porque nuestra API tiene el mejor precio desde el primer SMS.
País | Precio por SMS |
---|---|
España | 0,0495 € |
Francia | 0,0724 € |
Estados Unidos | 0,0220 € |
Abkhazia | 0,1300 € |
Afganistán | 0,1993 € |
Albania | 0,0594 € |
Alemania | 0,1078 € |
Andorra | 0,0997 € |
Angola | 0,0592 € |
Anguilla | 0,1495 € |
Antigua y Barbuda | 0,0997 € |
Arabia Saudí | 0,0997 € |
Argelia | 0,1495 € |
Argentina | 0,0682 € |
Armenia | 0,1495 € |
Aruba | 0,1132 € |
Australia | 0,1081 € |
Austria | 0,0869 € |
Azerbaiyán | 0,2492 € |
Bahamas | 0,0611 € |
Bahrein | 0,0440 € |
Bangladesh | 0,1993 € |
Barbados | 0,1495 € |
Belice | 0,1495 € |
Benín | 0,1495 € |
Bermudas | 0,1993 € |
Bielorrusia | 0,1993 € |
Bolivia | 0,0997 € |
Bosnia y Herzegovina | 0,0835 € |
Botswana | 0,0637 € |
Brasil | 0,0306 € |
Brunei | 0,0264 € |
Bulgaria | 0,1495 € |
Burkina Faso | 0,0997 € |
Burundi | 0,1495 € |
Bután | 0,2492 € |
Bélgica | 0,0748 € |
Cabo Verde | 0,0997 € |
Camboya | 0,1495 € |
Camerún | 0,1495 € |
Canadá | 0,0373 € |
Catar | 0,0549 € |
Chad | 0,2492 € |
Chile | 0,0151 € |
China | 0,0571 € |
Chipre | 0,0151 € |
Colombia | 0,0148 € |
Comoras | 0,1495 € |
Congo | 0,1495 € |
Congo (Rep. Dem.) | 0,1495 € |
Corea del Sur | 0,0693 € |
Costa Rica | 0,0395 € |
Costa de Marfil | 0,1993 € |
Croacia | 0,0666 € |
Cuba | 0,0861 € |
Curaçao | 0,0797 € |
Dinamarca | 0,0532 € |
Dominica | 0,1495 € |
East Timor | 0,1356 € |
Ecuador | 0,1933 € |
Egipto | 0,1495 € |
El Salvador | 0,2374 € |
Emiratos Árabes Unidos | 0,0997 € |
Eritrea | 0,0997 € |
Eslovenia | 0,0997 € |
Estonia | 0,0454 € |
Etiopía | 0,1993 € |
Filipinas | 0,0997 € |
Finlandia | 0,1165 € |
Fiyi | 0,1906 € |
Gabón | 0,1495 € |
Gambia | 0,1495 € |
Georgia | 0,1495 € |
Ghana | 0,0997 € |
Gibraltar | 0,1026 € |
Grecia | 0,0626 € |
Grenada | 0,1495 € |
Groenlandia | 0,0267 € |
Guadalupe | 0,1336 € |
Guatemala | 0,0997 € |
Guinea | 0,1495 € |
Guinea Ecuatorial | 0,1069 € |
Guinea-Bisáu | 0,1303 € |
Guyana | 0,0997 € |
Haiti | 0,1495 € |
Honduras | 0,0913 € |
Hong Kong | 0,0817 € |
Hungría | 0,1302 € |
India | 0,0879 € |
Indonesia | 0,2492 € |
International Networks | 0,0732 € |
Irak | 0,1495 € |
Iran | 0,1993 € |
Irlanda | 0,0596 € |
Islandia | 0,0859 € |
Islas Caimán | 0,1495 € |
Islas Cook | 0,0352 € |
Islas Faroe | 0,0616 € |
Islas Malvinas | 0,0209 € |
Islas Marshall | 0,1710 € |
Islas Salomón | 0,0342 € |
Islas Turks y Caicos | 0,1495 € |
Islas Vírgenes del Reino Unido | 0,1495 € |
Israel | 0,1495 € |
Italia | 0,0627 € |
Jamaica | 0,1495 € |
Japón | 0,0692 € |
Jordania | 0,1495 € |
Kazajistán | 0,1993 € |
Kenia | 0,1583 € |
Kirguizistán | 0,1993 € |
Kiribati | 0,1495 € |
Kuwait | 0,1495 € |
Laos | 0,0528 € |
Lesotho | 0,0706 € |
Letonia | 0,0390 € |
Liberia | 0,0997 € |
Libia | 0,2492 € |
Liechtenstein | 0,0277 € |
Lituania | 0,0523 € |
Luxemburgo | 0,0439 € |
Líbano | 0,0997 € |
Macao | 0,0937 € |
Macedonia | 0,0200 € |
Madagascar | 0,1495 € |
Malasia | 0,0826 € |
Malawi | 0,1495 € |
Maldivas | 0,0612 € |
Mali | 0,0997 € |
Malta | 0,0904 € |
Marruecos | 0,1993 € |
Mauricio | 0,0997 € |
Mauritania | 0,1495 € |
Moldavia | 0,1583 € |
Mongolia | 0,0462 € |
Montenegro | 0,0568 € |
Montserrat | 0,0265 € |
Mozambique | 0,0541 € |
Myanmar | 0,1993 € |
México | 0,0246 € |
Mónaco | 0,0719 € |
Namibia | 0,0549 € |
Nauru | 0,2053 € |
Nepal | 0,1495 € |
Nicaragua | 0,0859 € |
Nigeria | 0,1495 € |
Noruega | 0,0673 € |
Nueva Caledonia | 0,0987 € |
Nueva Zelanda | 0,1625 € |
Níger | 0,1495 € |
Omán | 0,0997 € |
Pakistán | 0,1993 € |
Palau | 0,1041 € |
Palestina | 0,2990 € |
Panamá | 0,0997 € |
Papúa Nueva Guinea | 0,1672 € |
Paraguay | 0,0297 € |
Países Bajos | 0,0989 € |
Perú | 0,0452 € |
Polinesia Francesa | 0,0997 € |
Polonia | 0,0223 € |
Portugal | 0,0242 € |
Puerto Rico | 0,0247 € |
Reino Unido | 0,0407 € |
República Centroafricana | 0,0391 € |
República Checa | 0,0598 € |
República Dominicana | 0,0512 € |
República Eslovaca | 0,0518 € |
República de Sudáfrica | 0,0125 € |
Reunión | 0,2022 € |
Ruanda | 0,1055 € |
Rumania | 0,1002 € |
Rusia | 0,3986 € |
Samoa | 0,0997 € |
Samoa Americana | 0,0761 € |
San Cristóbal y Nieves | 0,1495 € |
San Marino | 0,0840 € |
San Pedro y Miquelón | 0,1495 € |
San Vicente y Granadinas | 0,1495 € |
Santa Lucía | 0,1495 € |
Santo Tomé y Príncipe | 0,0989 € |
Senegal | 0,1236 € |
Serbia | 0,1859 € |
Seychelles | 0,0385 € |
Sierra Leone | 0,1568 € |
Singapur | 0,0505 € |
Siria | 0,1993 € |
Somalia | 0,1495 € |
Sri Lanka | 0,2492 € |
Suazilandia | 0,0982 € |
Sudán | 0,1993 € |
Sudán del Sur | 0,0586 € |
Suecia | 0,0615 € |
Suiza | 0,0333 € |
Surinam | 0,1514 € |
Tailandia | 0,0262 € |
Taiwán | 0,0664 € |
Tanzania | 0,1495 € |
Tayikistán | 0,1993 € |
Togo | 0,1447 € |
Tonga | 0,0616 € |
Trinidad y Tobago | 0,0997 € |
Turkmenistán | 0,1495 € |
Turquía | 0,0087 € |
Túnez | 0,0997 € |
Ucrania | 0,1993 € |
Uganda | 0,1495 € |
Uruguay | 0,1000 € |
Uzbekistán | 0,2492 € |
Vanuatu | 0,1495 € |
Venezuela | 0,0977 € |
Vietnam | 0,1495 € |
Yemen | 0,1993 € |
Yibuti | 0,1275 € |
Zambia | 0,1495 € |
Zimbabue | 0,1182 € |
Integración con PHP
SDK en PHP para enviar mensajes de texto.
ZPK-PHP es una librería de código abierto instalable mediante composer que le permitirá integrar nuestras APIs en su proyecto PHP con un mínimo esfuerzo.
Documentación del SDK para PHPInstalando ZPK-PHP con composer
composer require zpksystems/phpzpk
Ejemplo de request para enviar SMS
<?php
$smsRequest = new zpkSMS( new zpkApplication('appid','key') );
// Add SMS
$sms = new ZpkSms('+34600000000');
$sms->setMessage("Test SMS message");
$smsRequest->addSMS($sms);
// Add SMS with custom reference
$sms = new ZpkSms('+34600000000');
$sms->setMessage("Test SMS message");
$sms->setReference('my-reference');
$smsRequest->addSMS($sms);
// Send
$smsRequest->send();
Regístrese para probar esta API
Regístrese para obtener crédito gratuito y probar esta y otras APIs de ZPK