Contact Us
Do you need some more information?

We are glad to help you in any way.

Thank you!
We'll get in touch with you as soon as possible.
Back

Enter the Developers Friendly Zone.

Connect your app with our SMS API in minutes!

bulksms.guru

All you need for your app to send & receive SMS

Bulk SMS Guru is an SMS API Service for developers or teams who want to implement SMS as a communication channel in their apps, websites, software or systems.

Our SMS API is robust, secure and easy to implement. It empowers you to start sending and tracking BulkSMS in minutes.

The procedure is very simple: create the account to get access to HORISEN API enabling you to send Bulk SMS messages via HORISEN SMS Gateway. Have a full control over your applications without having to worry about maintaining complex and costly connections to network operators.

Did you know?

«HORISEN Wholesale SMS service is delivered through our SMS Platform
featuring 5,000 SMS/second
throughput capacity, low delivery
latency and 99.999% availability»

Did you know


SMS API for Developers

Our fully featured SMS API is simple yet powerful. When you start Bulk SMS Guru and create the account you get the instant access to our API to integrate HORISEN SMS service with you app, software, website etc.

Also, you are able to access web interface for managing your account.

Fast. Easy. Efficient.

HORISEN SMS API is REST based (HTTP/JSON) and is designed to allow third party developers to easily access our system from an external source.

QUICKSTARTER
  • Connecting
  • Sending Messages
  • Delivery Reports
  • Cookbook



LANGUAGES
  • Python
  • Java
  • Node.js
  • PHP and many more



REFERENCES
  • API Error Codes
  • Delivery States
  • GSM Character Set



Here is a code sample for developers who would like to connect to our SMS API:

smsdata = {
    "type":"text",
    "auth": {"username":"testuser", 
    "password":"testpassword"},
    "sender":"BulkTest",
    "receiver":"4179123456",
    "dcs":"GSM,
    "text":"This is test message",
    "dlrMask":19,
    "dlrUrl":"http://my-server.com/dlr"
}
r = requests.post("http://sms.horisen.info:12000/sms/sendjson", json=smsdat)
if r.status_code == 202:
    print "Success"
    print p.json()
elif r.status_code == 420:
    print "Error "
    print r.json()
else:
    print "Error " + str(r.status_code)
// using https://code.google.com/archive/p/json-simple/ for JSON
package bulksmsquickstart;
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
 
public class BulkSmsQuickStart {
 
    public static void main(String[] args) {
 
        JSONObject smsData = new JSONObject();
        JSONObject authData = new JSONObject();
        authData.put("username", "testuser");
        authData.put("password", "testpassword");
        smsData.put("type", "text");
        smsData.put("auth", authData);
        smsData.put("sender", "BulkTest");
        smsData.put("receiver", "4179123456");
        smsData.put("dcs", "GSM");
        smsData.put("text", "This is text message");
        smsData.put("dlrMask", new Integer(19));
        smsData.put("dlrUrl", "http://my-server.com/dlrjson");
        HttpURLConnection httpCon;
        URL url;
        try {
            url = new URL("http://sms.horisen.info:12000/sms/sendjson");
        } catch (MalformedURLException ex) {
            System.out.println(ex.toString());
            return ;
        }
        try {
            httpCon = (HttpURLConnection) url.openConnection();
            httpCon.setDoOutput(true);
            httpCon.setDoInput(true);
            httpCon.setUseCaches(false);
            httpCon.setRequestProperty("Content-Type", "application/json");
            httpCon.setRequestProperty("Accept", "application/json");
            httpCon.setRequestMethod("POST");
            try (OutputStreamWriter osw = new OutputStreamWriter(httpCon.getOutputStream(), "UTF-8")) {
                osw.write(smsData.toString());
                osw.flush();
            }
            int responseCode = httpCon.getResponseCode();
            switch (responseCode) {
                case 202:
                    {
                        StringBuilder response = new StringBuilder();
                        try (BufferedReader br = new BufferedReader(new InputStreamReader(httpCon.getInputStream(), StandardCharsets.UTF_8))) {
                            String line;
                            while ((line = br.readLine()) != null) {
                                response.append(line);
                            }
                        }      
                        JSONParser parser = new JSONParser();
                        Object smsId = parser.parse(response.toString());
                        System.out.println(smsId);
                        break;
                    }
                case 420:
                    {
                        StringBuilder response = new StringBuilder();
                        try (BufferedReader br = new BufferedReader(new InputStreamReader(httpCon.getInputStream(), StandardCharsets.UTF_8))) {
                            String line;
                            while ((line = br.readLine()) != null) {
                                response.append(line);
                            }
                        }      
                        JSONParser parser = new JSONParser();
                        Object err = parser.parse(response.toString());
                        System.out.println(err);
                        break;
                    }
                default:
                    System.out.format("error, status : %d\n", responseCode);
                    break;
            }
        } catch (Exception exception) {
            System.out.println(exception.toString());
        }
    }
}
var http = require('http')
 
var smsdata = {
    type:"text",
    auth : {username:"testuser", password:"testpassword"},
    sender:"BulkTest",
    receiver:"4179123456",
    dcs:"GSM,
    text:"This is test message",
    dlrMask:19,
    dlrUrl:"http://my-server.com/dlr"
}
var post_data = JSON.stringify(smsdata);
 
var options = {
        host: 'sms.horisen.info',
        port: 12000,
        path: '/sms/sendjson',
        method: POST,
         headers: {
              'Content-Type': 'application/json',
              'Content-Length': Buffer.byteLength(post_data)
          }
    };
 
 
var callback = function(response){
   // Continuously update stream with data
   var body = '';
   response.on('data', function(data) {
      body += data;
   });
    
   response.on('end', function() {
      // Data received completely.
      var status = response.statusCode;
      if (stats == 202) {
            console.log("success);
            data = JSON.parse(body);
            console.log(data);
      } else if (status  = 420) {
            console.log("error);
            err = JSON.parse(body);
            console.log(err)
      } else {
        console.log("error status :",stautus);
      }
   });
}
// Make a request to the server
var req = http.request(options, callback);
req.write(post_data);
req.end();
$smsdata = {
    "type" => "text",
    "auth" =>  array("username" => "testuser",
                    "password" => "testpassword"),
    "sender" => "BulkTest",
    "receiver" => "4179123456",
    "dcs" => "GSM,
    "text" => "This is test message",
    "dlrMask" => 19,
    "dlrUrl" => "http://my-server.com/dlrjson.php"
}
$url = "http://sms.horisen.info:12000/sms/sendjson";   
$content = json_encode($smsdata);
 
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER,
        array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $content);
 
$json_response = curl_exec($curl);
 
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
 
if ( $status == 202 ) {
    print_r("success");
    $response = json_decode($json_response,true);
    print_r($response);
} elseif ($status == 420) {
    print_r("error");
    $response = json_decode($json_response,true);
    print_r($response);
} else {
    printf("error , status code : %d",$status);
}
 
 
curl_close($curl);
using Newtonsoft.Json;
namespace BulkSmsQuickStartSender
{
    class Auth
    {
        [JsonProperty(PropertyName = "username")]
        public string Username { get; set; }
        [JsonProperty(PropertyName = "password")]
        public string Password { get; set; }
    }
    class Sms
    {
        [JsonProperty(PropertyName = "type")]
        public string Type { get; set; }
        [JsonProperty(PropertyName = "auth")]
        public Auth auth { get; set; }
        [JsonProperty(PropertyName = "sender")]
        public string Sender { get; set; }
        [JsonProperty(PropertyName = "receiver")]
        public string Receiver { get; set; }
        [JsonProperty(PropertyName = "dcs")]
        public string Dcs { get; set; }
        [JsonProperty(PropertyName = "text")]
        public string Text { get; set; }
        [JsonProperty(PropertyName = "dlrMask")]
        public int DlrMask { get; set; }
        [JsonProperty(PropertyName = "dlrUrl")]
        public string DlrUrl { get; set; }
    }
    class MsgData
    {
        [JsonProperty(PropertyName = "msgId")]
        public string MsgId { get; set; }
        [JsonProperty(PropertyName = "numParts")]
        public int NumParts { get; set; }
    }
    class ErrorValue
    {
        [JsonProperty(PropertyName = "code")]
        public string Code { get; set; }
        [JsonProperty(PropertyName = "message")]
        public string Message { get; set; }
    }
    class Error
    {
        [JsonProperty(PropertyName = "error")]
        public ErrorValue Err { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            var httpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("http://sms.horisen.info:12000/sms/sendjson");
            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method = "POST";
            using (var streamWriter = new System.IO.StreamWriter(httpWebRequest.GetRequestStream()))
            {
                var sms = new Sms
                {
                    Type = "text",
                    Sender = "BulkSender",
                    Receiver = "4179123456",
                    Text = "This is test message",
                    DlrMask = 19,
                    DlrUrl = "http://my-server.com/dlrjson",
                    auth = new Auth
                    {
                        Username = "testuser",
                        Password = "testpassword"
                    }
                };
                 
                var json = JsonConvert.SerializeObject(sms, Formatting.Indented);
                streamWriter.Write(json);
            }
            System.Net.HttpWebResponse httpResponse = null;
            try
            {
                httpResponse = (System.Net.HttpWebResponse)httpWebRequest.GetResponse();
            }
            catch (System.Net.WebException we)
            {
                httpResponse = (System.Net.HttpWebResponse)we.Response;
            }
            var status = (int)httpResponse.StatusCode;                  
            switch (status)
            {
                case 202: // System.Net.HttpStatusCode.Accepted:
                    System.Console.WriteLine("success");
                    using (var streamReader = new System.IO.StreamReader(httpResponse.GetResponseStream()))
                    {
                        var result = streamReader.ReadToEnd();
                        //decode JSON response
                        var msgId = JsonConvert.DeserializeObject(result);
                        System.Console.Write(msgId);
                    }
                    break;
                case 420:
                    System.Console.WriteLine("error");
                    using (var streamReader = new System.IO.StreamReader(httpResponse.GetResponseStream()))
                    {
                        var result = streamReader.ReadToEnd();
                        //decode JSON response
                        var error = JsonConvert.DeserializeObject(result);
                        System.Console.Write(error);
                    }
                    break;
                default:
                    System.Console.WriteLine("error:");
                    System.Console.WriteLine(status);
                    break;
            }
            System.Console.ReadLine();
        }       
    }
}
type BulkResponseOK struct {
        
}
  
type BulkResponseErr struct {
        
}

url := "http://sms.horisen.info:12000/sms/sendjson"
 
    var jsonSMSdata = []byte(`{
        "type":"text",
        "auth": {"username":"testuser", "password":"testpassword"},
        "sender":"BulkTest",
        "receiver":"4179123456",
        "dcs":"GSM,
        "text":"This is test message",
        "dlrMask":19,
        "dlrUrl":"http://my-server.com/dlrjson"
    }`)
    req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonSMSdata))
    req.Header.Set("Content-Type", "application/json")
 
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    body, _ := ioutil.ReadAll(resp.Body)
     
    switch resp.Status {
        case 202:
            fmt.Println("success") 
            var r BulkResponseOk       
            err := json.Unmarshal(body, &r)
            if err != nil {
                    log.Println(err.Error())
            }
            fmt.Println("received response :", r)
        case 420:
            fmt.Println("error")
            var r BulkResponseErr      
            err := json.Unmarshal(body, &r)
            if err != nil {
                    log.Println(err.Error())
            }
            fmt.Println("received response :", r)
        default:
            fmt.Println("error")
            fmt.Println("response status:", resp.Status)
    }

Create your account
and start messaging in just a few steps.

Let's go!

Sign Up Now!
Create
Account

Contact
Us