Text CALL to 88440

+44 (0)1484 599 311

Login Free Account

Spring Offer

50% Free

Purchase up to 25,000 credits and get 50% FREE!

*Terms and conditions apply

Developer Tools

Free Account
Our new API is live!

Our new API is now available to use. We have improved the methods that you are familiar with, offering you a clearer understanding of what each property can do and a more detailed response from each call.

The old API is still fully functioning and support for this will not end.

We are also introducing API Keys which are used to access the API methods and improve the security around using the API.

Click here to see the new Developer page.

Click here to read our new Developer Documentation.

Send Web SMS Via API

This call will allow you to send a Web SMS via API. The destination number and message body will be supplied in a csv or XLS file which needs to be made available via an external SFTP site. The remainder of the settings such as the file name, send time and originator are supplied via the API call.

Please note, to use this feature you will need to first setup an external SFTP site where the file can be collected. To do this please log into your account and go to 'Send SMS' -> 'API Management'


http:// or https:// www.voodooSMS.com/vapi/server/sendWeb SMS/





Required Fields


System allocated username for API user configured within the VoodooSMS.com Portal in 'Send SMS>API Management'


System password for API user configured within the VoodooSMS.com Portal in 'Send SMS>API Management'


Maximum of 15 Numeric Digits or 11 alphanumeric (a-z, A-Z, 0-9 only)

(The Sender ID is who the message appears from. A Sender ID must be greater than 4 characters. You can use up to 11 alphanumeric characters. Please note that some networks accept spaces whilst others do not and will remove them. Using the number '3' in a Sender ID requires registration - please contact your Account Manager to discuss this.)


1 (always)


The name to apply to the Web SMS


The file name to collect - can be CSV or XLS variants

(The first column should be titled `number` and the second column with `body` as the title if you do not send message in `msg` param, you can download sample file here.)


This is the ID of the SFTP configuration created within the portal.


Return format requested: XML, JSON or PHP data.

Optional Parameters


The body of the SMS if just a list of contacts is supplied, if not supplied then the message body will be in the csv / xls


Check & reformat destination number feature
This is an optional field, if you choose to specify the country code in the send SMS API Call, e.g. 44 (UK number) then the API will check that the specified destination numbers are valid. An example of this can be seen below.

  • If dest=447700900000 and cc=44 - no change will be made.
  • If dest=07700900000 and cc=44 - dest will be changed to 447700900000
  • If dest=7700900000 and cc=44 - dest will be changed to 447700900000


To schedule a Send Web SMS API call for a future date use the sd parameter. The date and time must be in the future. If no timezone (tz) is specified then UTC is set as default.


By default, our API uses the UTC (Coordinated Universal Time). If you want to make an API call different to UTC then simply add, or subtract the time from UTC. `e.g. Melbourne`, Australia is UTC+11 so the API call would be &tz=+11

Sending Web SMS to multiple destinations via API


    case "GET":
        $uid = htmlspecialchars($_GET["uid"]);
        $pass = htmlspecialchars($_GET["pass"]);
        $orig = htmlspecialchars($_GET["orig"]);
        $name = htmlspecialchars($_GET["name"]);
        $file = htmlspecialchars($_GET["file"]);
        $locid = htmlspecialchars($_GET["locid"]);
        $format = htmlspecialchars($_GET["format"]);
    case "POST":
        $uid = htmlspecialchars($_POST["uid"]);
        $pass = htmlspecialchars($_POST["pass"]);
        $orig = htmlspecialchars($_POST["orig"]);
        $name = htmlspecialchars($_POST["name"]);
        $file = htmlspecialchars($_POST["file"]);
        $locid = htmlspecialchars($_POST["locid"]);
        $format = htmlspecialchars($_POST["format"]);
$url = 'https://www.voodoosms.com/vapi/server/sendWebSMS?uid='.$uid.'&pass='.$pass.'&orig='.$orig
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
// Download the given URL, and return output
$output = curl_exec($ch);
echo $output."   ".curl_error($ch);
// Close the cURL resource, and free system resources

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class Servlet extends HttpServlet {
     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          if (request.getAttribute("uid") != null && request.getAttribute("pass") != null
                && request.getAttribute("orig") != null && request.getAttribute("name") != null
                && request.getAttribute("file") != null && request.getAttribute("locid") != null 
                && request.getAttribute("format") != null) {
               String charset = "UTF-8";
               String query = String.format("uid=%s&pass=%s&orig=%s&name=%s&file=%s&locid=%s&format=%s",
                URLEncoder.encode(request.getAttribute("uid").toString(), charset),
                URLEncoder.encode(request.getAttribute("pass").toString(), charset),
                URLEncoder.encode(request.getAttribute("orig").toString(), charset),
                URLEncoder.encode(request.getAttribute("name").toString(), charset),
                URLEncoder.encode(request.getAttribute("file").toString(), charset),
                URLEncoder.encode(request.getAttribute("locid").toString(), charset),
                URLEncoder.encode(request.getAttribute("format").toString(), charset));
               String url = "www.voodoosms.com/vapi/server/sendWebSMS";
               URLConnection connection = new URL(url + "?" + query).openConnection();
               connection.setRequestProperty("Accept-Charset", charset);
               InputStream reqres = connection.getInputStream();
               // reqres contains the request output
          } else {
            // Wrong parameters
     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Same as GET

var http = require('http');
var https = require('https');
var querystring = require('querystring');
var url = require('url');
var server = http.createServer(function(req, res) {
    var url_parts = url.parse(req.url, true);
    var query = url_parts.query;
    var uid = query.uid;
    var pass = query.pass;
    var orig = query.orig;
    var name = query.name;
    var name = query.file;
    var name = query.locid;
    var format = query.format;
    if (uid && pass && orig && name && file && locid && format) {
        var get_data = querystring.stringify({
          "uid": uid,
          "pass": pass,
          "orig": orig,
          "name": name,
          "file": file,
          "locid": locid,
          "format": format
        var options = {
          host: 'www.voodoosms.com',
          path: '/vapi/server/sendWebSMS?' + get_data
        https.get(options, function(reqres) {
          reqres.on('data', function(chunk) {
    } else
        res.end("Wrong parameters");


require 'net/http'
require 'json'
class Controller < ApplicationController
    def index
        uid = params[: uid]
        pass = params[: pass]
        orig = params[: orig]
        name = params[: name]
        file = params[: file]
        locid = params[: locid]
        format = params[: format]
        if uid and pass and orig and name and file and locid and format
            uri = "?uid=" + uid + "&pass=" + pass + "&orig=" + orig
            + "&name=" + name + "&file=" + file + "&locid=" + locid + "&format=" + format
            uri = 0
        if uri != 0
            url = URI.parse('http://www.voodoosms.com/vapi/server/sendWebSMS' + uri)
            uri = URI(url)
            response = Net::HTTP.get(uri)
            @res = response
          @res = "Wrong parameters"

from django.http
import HttpResponse, HttpRequest
import urllib2
def index(request):
if request.method == 'GET':
    uid = request.GET.get('uid', '')
    pas = request.GET.get('pass', '')
    orig = request.GET.get('orig', '')
    name = request.GET.get('name', '')
    file = request.GET.get('file', '')
    locid = request.GET.get('locid', '')
    format = request.GET.get('format', '')
elif request.method == 'POST':
    uid = request.POST.get('uid', '')
    pas = request.POST.get('pass', '')
    orig = request.POST.get('orig', '')
    name = request.POST.get('name', '')
    file = request.POST.get('file', '')
    locid = request.POST.get('locid', '')
    format = request.POST.get('format', '')
if uid and pas and orig and name and file and locid and format:
    u = "?uid=%s&pass=%s&orig=%s&name=%s&file=%s&locid=%s&format=%s" % (uid, pas, orig, name, file, locid, format)
else :
    u = 0
if u:
    res = urllib2.urlopen("https://voodoosms.com/vapi/server/sendWebSMS" + u).read()
    return HttpResponse(res)
else :
    return HttpResponse("Wrong parameters")

using System;
using System.Net.Http;
using System.Web;

var client = new HttpClient();

//Get the parameters, either GET or POST request
    string uid = HttpContext.Current.Server.HtmlEncode(Request["uid"]);
    string pass = HttpContext.Current.Server.HtmlEncode(Request["pass"]);
    string orig = HttpContext.Current.Server.HtmlEncode(Request["orig"]);
    string name = HttpContext.Current.Server.HtmlEncode(Request["name"]);
    string file = HttpContext.Current.Server.HtmlEncode(Request["file"]);
    string locid = HttpContext.Current.Server.HtmlEncode(Request["locid"]);
    string format = HttpContext.Current.Server.HtmlEncode(Request["format"]);

//Exit if one or more parameters is missing
    if(String.IsNullOrEmpty(uid) || String.IsNullOrEmpty(pass) || String.IsNullOrEmpty(orig) ||
    String.IsNullOrEmpty(name) || String.IsNullOrEmpty(file) || String.IsNullOrEmpty(locid)
    || String.IsNullOrEmpty(format)) System.Environment.Exit(1)

// Send the async request
    HttpResponseMessage response = await client.GetAsync(
    "https://www.voodoosms.com/vapi/server/sendWebSMS?uid=" + uid + "&pass="
    + pass + "&orig=" + orig + "&name=" + name + "&file=" + file + "&locid="
    + locid + "&format=" + format);

// Get the response content
HttpContent responseContent = response.Content;

// Get the stream of the content and write the output
using (var reader = new StreamReader(await responseContent.ReadAsStreamAsync()))
Console.WriteLine(await reader.ReadToEndAsync());


    "requestError": {
        "serviceException": {
            "messageId": "UNAUTHORIZED",
            "text": "Invalid login details"
Request Headers
Accept: */*
Referer: http:// or https:// www.voodoosms.com/vapi/server
authorization: Basic ZGZkZjpzZGZkZg==
accept-encoding: gzip, deflate
content-type: application/json
content-length: 64
URL http:// or https:// www.voodoosms.com/vapi/server/sendSMS
Request Data
    "from": "447711112244",
    "to": [
    "text": "tsdsdsd"
Response Headers
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK,
PURGE access-control-allow-headers: Authorization, Content-Type, X-Enrollment-Token
content-type: application/json;charset=UTF-8
content-length: 97
date: Tue, 27 Dec 2016 08:17:07 GMT
connection: close
server: SMS API
strict-transport-security: max-age=16000000; includeSubDomains; preload;