BulkSMS JSON REST API
bulksms · Company
## Overview The JSON REST API allows you to submit and receive [BulkSMS](https://www.bulksms.com/) messages. You can also get access to past messages and see your account profile. The base URL to use for this service is `https://api.bulksms.com/v1`. The base URL cannot be used on its own; you must append a path that identifies an operation and you may have to specify some path parameters as well. [Click here](/developer/) to go to the main BulkSMS developer site. In order to give you an ide
Authentication
Sample Requests
List blocked numbers
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/bulksms.com/1.0.0/blocked-numbers?limit=10&min-id=1"
import requests
params = {
"limit": "10",
"min-id": "1"
}
response = requests.get(
"https://api.apis.guru/v2/specs/bulksms.com/1.0.0/blocked-numbers",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/bulksms.com/1.0.0/blocked-numbers');
url.searchParams.set('limit', '10');
url.searchParams.set('min-id', '1');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/bulksms.com/1.0.0/blocked-numbers")
q := baseURL.Query()
q.Set("limit", "10")
q.Set("min-id", "1")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/bulksms.com/1.0.0/blocked-numbers")
uri.query = URI.encode_www_form({
"limit" => "10",
"min-id" => "1"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/bulksms.com/1.0.0/blocked-numbers?" . http_build_query([
"limit" => "10",
"min-id" => "1"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Retrieve the messages you have sent or received. Scheduled messages are available for retrieval only after the delivery date. All the parameters are optional. If a value is not supplied for `filter`, the messages are not filtered. Messages can be filtered by supplying query clauses in the `fil
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/bulksms.com/1.0.0/messages?limit=10&filter=example&sortOrder=ASCENDING"
import requests
params = {
"limit": "10",
"filter": "example",
"sortOrder": "ASCENDING"
}
response = requests.get(
"https://api.apis.guru/v2/specs/bulksms.com/1.0.0/messages",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/bulksms.com/1.0.0/messages');
url.searchParams.set('limit', '10');
url.searchParams.set('filter', 'example');
url.searchParams.set('sortOrder', 'ASCENDING');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/bulksms.com/1.0.0/messages")
q := baseURL.Query()
q.Set("limit", "10")
q.Set("filter", "example")
q.Set("sortOrder", "ASCENDING")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/bulksms.com/1.0.0/messages")
uri.query = URI.encode_www_form({
"limit" => "10",
"filter" => "example",
"sortOrder" => "ASCENDING"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/bulksms.com/1.0.0/messages?" . http_build_query([
"limit" => "10",
"filter" => "example",
"sortOrder" => "ASCENDING"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));A really simple interface for people who require a GET mechanism to submit a single message. The URI is interpreted as UTF-8. HTTP Basic Auth is used for authentication. __Note__ BulkSMS recommends that you use the more flexible Send Messages Operation when submitting SMS messages from your applic
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/bulksms.com/1.0.0/messages/send?to=2024-12-31&body=example&deduplication-id=1"
import requests
params = {
"to": "2024-12-31",
"body": "example",
"deduplication-id": "1"
}
response = requests.get(
"https://api.apis.guru/v2/specs/bulksms.com/1.0.0/messages/send",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/bulksms.com/1.0.0/messages/send');
url.searchParams.set('to', '2024-12-31');
url.searchParams.set('body', 'example');
url.searchParams.set('deduplication-id', '1');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/bulksms.com/1.0.0/messages/send")
q := baseURL.Query()
q.Set("to", "2024-12-31")
q.Set("body", "example")
q.Set("deduplication-id", "1")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/bulksms.com/1.0.0/messages/send")
uri.query = URI.encode_www_form({
"to" => "2024-12-31",
"body" => "example",
"deduplication-id" => "1"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/bulksms.com/1.0.0/messages/send?" . http_build_query([
"to" => "2024-12-31",
"body" => "example",
"deduplication-id" => "1"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Postman Setup Guide
- See official documentation for authentication and setup.
What can you build with BulkSMS JSON REST API?
BulkSMS JSON REST API is a Company API. Developers commonly use company APIs for:
- enriching CRM records with company firmographics
- building lead-generation and prospecting tools
- verifying business identity and registration details
- monitoring competitors and market intelligence
- powering B2B data enrichment pipelines
No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. BulkSMS JSON REST API is free to use, making it a low-risk choice to experiment with.
New to APIs? Read our beginner's guide · Learn about API keys · What is REST?