1. Get your credentials
Contact bulktext.ie@vodafone.com to retrieve your username, password, and API ID.2. Get an access token
curl -X POST https://auth.vodafone.com/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password&client_id=ismstoken&username=YOUR_USERNAME&password=YOUR_PASSWORD"
import requests
res = requests.post(
"https://auth.vodafone.com/token",
data={
"grant_type": "password",
"client_id": "ismstoken",
"username": "YOUR_USERNAME",
"password": "YOUR_PASSWORD"
}
)
print(res.json())
using System.Net.Http;
using var client = new HttpClient();
var body = new FormUrlEncodedContent(new Dictionary<string, string>
{
["grant_type"] = "password",
["client_id"] = "ismstoken",
["username"] = "YOUR_USERNAME",
["password"] = "YOUR_PASSWORD"
});
var res = await client.PostAsync("https://auth.vodafone.com/token", body);
Console.WriteLine(await res.Content.ReadAsStringAsync());
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
String form = "grant_type=password"
+ "&client_id=ismstoken"
+ "&username=" + URLEncoder.encode("YOUR_USERNAME", StandardCharsets.UTF_8)
+ "&password=" + URLEncoder.encode("YOUR_PASSWORD", StandardCharsets.UTF_8);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://auth.vodafone.com/token"))
.header("Content-Type", "application/x-www-form-urlencoded")
.POST(HttpRequest.BodyPublishers.ofString(form))
.build();
HttpResponse<String> res = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
$client = new GuzzleHttp\Client();
$res = $client->post('https://auth.vodafone.com/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 'ismstoken',
'username' => 'YOUR_USERNAME',
'password' => 'YOUR_PASSWORD',
],
]);
echo $res->getBody();
const res = await fetch('https://auth.vodafone.com/token', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
grant_type: 'password',
client_id: 'ismstoken',
username: 'YOUR_USERNAME',
password: 'YOUR_PASSWORD'
})
});
console.log(await res.json());
access_token from the response. It expires in 120 seconds.
3. Send a message
curl -X POST https://api.vodafone.com/api/v2/Campaign \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello from Vodafone Bulk Text!",
"from": "Vodafone",
"recipientInfo": [
{ "msisdn": "353861234567" }
]
}'
// Step 1: Get token
const tokenRes = await fetch('https://auth.vodafone.com/token', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
grant_type: 'password',
client_id: 'ismstoken',
username: 'YOUR_USERNAME',
password: 'YOUR_PASSWORD'
})
});
const { access_token } = await tokenRes.json();
// Step 2: Send campaign
const res = await fetch('https://api.vodafone.com/api/v2/Campaign', {
method: 'POST',
headers: {
'Authorization': `Bearer ${access_token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
text: 'Hello from Vodafone Bulk Text!',
from: 'Vodafone',
recipientInfo: [{ msisdn: '353861234567' }]
})
});
console.log(await res.json());
import requests
# Step 1: Get token
token_res = requests.post(
'https://auth.vodafone.com/token',
data={
'grant_type': 'password',
'client_id': 'ismstoken',
'username': 'YOUR_USERNAME',
'password': 'YOUR_PASSWORD'
}
)
access_token = token_res.json()['access_token']
# Step 2: Send campaign
res = requests.post(
'https://api.vodafone.com/api/v2/Campaign',
headers={'Authorization': f'Bearer {access_token}'},
json={
'text': 'Hello from Vodafone Bulk Text!',
'from': 'Vodafone',
'recipientInfo': [{'msisdn': '353861234567'}]
}
)
print(res.json())
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using var client = new HttpClient();
var tokenBody = new FormUrlEncodedContent(new Dictionary<string, string>
{
["grant_type"] = "password",
["client_id"] = "ismstoken",
["username"] = "YOUR_USERNAME",
["password"] = "YOUR_PASSWORD"
});
var tokenRes = await client.PostAsync("https://auth.vodafone.com/token", tokenBody);
var tokenJson = JsonDocument.Parse(await tokenRes.Content.ReadAsStringAsync());
var accessToken = tokenJson.RootElement.GetProperty("access_token").GetString();
var campaign = new
{
text = "Hello from Vodafone Bulk Text!",
from = "Vodafone",
recipientInfo = new[] { new { msisdn = "353861234567" } }
};
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var res = await client.PostAsync(
"https://api.vodafone.com/api/v2/Campaign",
new StringContent(JsonSerializer.Serialize(campaign), Encoding.UTF8, "application/json")
);
Console.WriteLine(await res.Content.ReadAsStringAsync());
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
HttpClient client = HttpClient.newHttpClient();
String form = "grant_type=password"
+ "&client_id=ismstoken"
+ "&username=" + URLEncoder.encode("YOUR_USERNAME", StandardCharsets.UTF_8)
+ "&password=" + URLEncoder.encode("YOUR_PASSWORD", StandardCharsets.UTF_8);
HttpRequest tokenRequest = HttpRequest.newBuilder()
.uri(URI.create("https://auth.vodafone.com/token"))
.header("Content-Type", "application/x-www-form-urlencoded")
.POST(HttpRequest.BodyPublishers.ofString(form))
.build();
HttpResponse<String> tokenResponse = client.send(tokenRequest, HttpResponse.BodyHandlers.ofString());
String accessToken = tokenResponse.body().split("\"access_token\":\"")[1].split("\"")[0];
String campaignJson = """
{
"text": "Hello from Vodafone Bulk Text!",
"from": "Vodafone",
"recipientInfo": [
{ "msisdn": "353861234567" }
]
}
""";
HttpRequest campaignRequest = HttpRequest.newBuilder()
.uri(URI.create("https://api.vodafone.com/api/v2/Campaign"))
.header("Authorization", "Bearer " + accessToken)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(campaignJson))
.build();
HttpResponse<String> campaignResponse = client.send(campaignRequest, HttpResponse.BodyHandlers.ofString());
System.out.println(campaignResponse.body());
// Step 1: Get token
$client = new GuzzleHttp\Client();
$tokenRes = $client->post('https://auth.vodafone.com/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 'ismstoken',
'username' => 'YOUR_USERNAME',
'password' => 'YOUR_PASSWORD',
],
]);
$accessToken = json_decode($tokenRes->getBody())->access_token;
// Step 2: Send campaign
$res = $client->post('https://api.vodafone.com/api/v2/Campaign', [
'headers' => ['Authorization' => "Bearer $accessToken"],
'json' => [
'text' => 'Hello from Vodafone Bulk Text!',
'from' => 'Vodafone',
'recipientInfo' => [['msisdn' => '353861234567']],
],
]);
echo $res->getBody();
Campaign response
{
"success": true,
"message": "Campaign scheduled",
"errors": []
}
Next steps
Authentication
Understand token expiry and refresh strategy.
Sender IDs
Find out which Sender IDs are available on your account.
Sending SMS
Bulk sends, scheduling, and notifyId tracking.
API Reference
Full endpoint reference with interactive playground.