শুরু করুন
Bulk SMS API রেফারেন্স
BulkSMSAPI ডেভেলপারদের জন্য একটি বাল্ক SMS API: REST এর মাধ্যমে 227টি দেশে প্রতি অনুরোধে একটি টেক্সট বা 10,000 নম্বর পর্যন্ত একটি ব্যাচ পাঠান, প্রতিটি মেসেজকে সাইনড ওয়েবহুকের সাথে অনুসরণ করুন, এবং প্রিপেইড ব্যালেন্স থেকে প্রতি মেসেজের জন্য অর্থ প্রদান করুন। এই রেফারেন্স API এর প্রতিটি এন্ডপয়েন্ট, ফিল্ড, ইভেন্ট এবং এরর কভার করে। প্রতিটি পৃষ্ঠা Markdown হিসাবেও উপলব্ধ: এর ঠিকানায় .md যোগ করুন।
বেস URL এবং ফরম্যাট
সমস্ত অনুরোধ HTTPS এর মাধ্যমে https://bulksmsapi.cc/v1 এ যায়। বডি JSON (Content-Type: application/json, UTF-8), এবং প্রতিটি উত্তর JSON, এরর সহ। সময়গুলি UTC এ ISO 8601। অর্থ পাঁচ দশমিক সহ US ডলারে একটি স্ট্রিং ("0.00507"), তাই এক সেন্টের নিচের দামগুলি সঠিক।
এন্ডপয়েন্ট
| মেথড এবং পাথ | এটি কি করে | Key |
|---|---|---|
| POST /v1/messages | একটি নম্বরে একটি টেক্সট পাঠান | Yes |
| POST /v1/batches | 10,000 নম্বর পর্যন্ত পাঠান, একটি টেক্সট বা প্রতিটি নম্বরে একটি | Yes |
| GET /v1/messages/{id} | একটি মেসেজ এর স্ট্যাটাস এবং প্রাইস সহ | Yes |
| GET /v1/messages | Messages, নতুন থেকে পুরাতন, ব্যাচ বা স্ট্যাটাস অনুযায়ী ফিল্টার করুন | Yes |
| GET /v1/batches/{id} | একটি ব্যাচ যেখানে প্রতিটি স্ট্যাটাসের সংখ্যা দেখানো হয়েছে | Yes |
| GET /v1/batches | Batches, নতুন থেকে পুরাতন | Yes |
| POST /v1/batches/{id}/cancel | একটি শিডিউল্ড ব্যাচ বাতিল করুন, সম্পূর্ণ রিফান্ড পাবেন | Yes |
| POST /v1/estimates | একটি রিকোয়েস্টের দাম নির্ধারণ করুন এটি পাঠানো ছাড়াই | Yes |
| GET /v1/balance | USD-এ ব্যালেন্স | Yes |
| GET /v1/pricing | প্রতিটি দেশের জন্য প্রতি সেগমেন্টের দাম | No |
| GET /v1/pricing/{country} | একটি দেশের জন্য দাম (ISO কোড) | No |
প্রথম অনুরোধ
কনসোলে একটি API কী তৈরি করুন, এক্সপোর্ট করুন এবং একটি মেসেজ পাঠান। উত্তর হবে 202 যেখানে মেসেজ অবজেক্ট থাকবে: খরচ ব্যালেন্স থেকে কাটা হবে এবং মেসেজ কিউতে যাবে।
curl https://bulksmsapi.cc/v1/messages \
-H "Authorization: Bearer $BULKSMSAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+14155550123",
"text": "Your Northwind code is 482913. It expires in 10 minutes.",
"reference": "login-7781"
}'// Node.js 18 or newer (built-in fetch)
const res = await fetch("https://bulksmsapi.cc/v1/messages", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BULKSMSAPI_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
to: "+14155550123",
text: "Your Northwind code is 482913. It expires in 10 minutes.",
reference: "login-7781",
}),
});
const message = await res.json();
console.log(res.status, message.id, message.status, message.price);# Python 3, standard library only
import json, os, urllib.request
req = urllib.request.Request(
"https://bulksmsapi.cc/v1/messages",
data=json.dumps({
"to": "+14155550123",
"text": "Your Northwind code is 482913. It expires in 10 minutes.",
"reference": "login-7781",
}).encode(),
headers={
"Authorization": "Bearer " + os.environ["BULKSMSAPI_KEY"],
"Content-Type": "application/json",
"User-Agent": "northwind-app/1.0",
},
method="POST",
)
with urllib.request.urlopen(req) as res:
message = json.load(res)
print(res.status, message["id"], message["status"], message["price"])<?php
// PHP 7.4 or newer with the curl extension
$ch = curl_init("https://bulksmsapi.cc/v1/messages");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("BULKSMSAPI_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"to" => "+14155550123",
"text" => "Your Northwind code is 482913. It expires in 10 minutes.",
"reference" => "login-7781",
]),
]);
$message = json_decode(curl_exec($ch), true);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), " ", $message["id"], " ", $message["status"], "\n";// Go 1.20 or newer, standard library only
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main() {
body, _ := json.Marshal(map[string]any{
"to": "+14155550123",
"text": "Your Northwind code is 482913. It expires in 10 minutes.",
"reference": "login-7781",
})
req, _ := http.NewRequest("POST", "https://bulksmsapi.cc/v1/messages", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer "+os.Getenv("BULKSMSAPI_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
var message map[string]any
json.NewDecoder(res.Body).Decode(&message)
fmt.Println(res.StatusCode, message["id"], message["status"], message["price"])
}{
"id": "msg_8F3K2Q9TZ1MX",
"object": "message",
"batch_id": "bat_4M7Q1X0PK2RS",
"to": "+14155550123",
"country": "US",
"text": "Your Northwind code is 482913. It expires in 10 minutes.",
"segments": 1,
"price": "0.00507",
"currency": "USD",
"status": "queued",
"error": null,
"reference": "login-7781",
"created_at": "2026-11-07T09:30:12.418Z",
"sent_at": null,
"done_at": null
}কিভাবে একটি মেসেজ চলে
গ্রহণ করা মেসেজগুলি queued হয় (বা scheduled হয় যখন রিকোয়েস্টে send_at থাকে)। কিউ প্রতি দুই সেকেন্ডে এগুলিকে নেটওয়ার্কে হস্তান্তর করে, প্রতি অ্যাকাউন্টে প্রতি মিনিটে সর্বোচ্চ 1,200 পর্যন্ত, এবং এগুলি sent হয়ে যায়। চূড়ান্ত স্ট্যাটাস হয় delivered বা failed; একটি ব্যর্থ মেসেজ অবিলম্বে ব্যালেন্সে রিফান্ড করা হয়। প্রতিটি চূড়ান্ত স্ট্যাটাস আপনার ওয়েবহুককে একটি সাইনড ইভেন্টের মাধ্যমে কল করে।
এক নজরে লিমিট
| লিমিট | মান |
|---|---|
| প্রতি API রিকোয়েস্টে প্রাপক সংখ্যা | 10,000 |
| প্রতি কনসোল ক্যাম্পেইনে প্রাপক সংখ্যা | 50,000 |
| প্রতি কী প্রতি মিনিটে রিকোয়েস্ট সংখ্যা | 600 |
| প্রতি অ্যাকাউন্ট প্রতি মিনিটে নেটওয়ার্কে হস্তান্তর করা মেসেজ সংখ্যা | 1,200 |
| দীর্ঘতম টেক্সট | 10 সেগমেন্ট (1,530 GSM-7 বা 670 UCS-2 ক্যারেক্টার) |
| শিডিউল উইন্ডো | 2 মিনিট থেকে 45 দিন আগে |
| ইভেন্ট প্রতি ওয়েবহুক প্রচেষ্টা | 10 |
| Idempotency-Key মেমোরি | 24 ঘন্টা |
| প্রতি অ্যাকাউন্টে API কী সংখ্যা | 10 |
মেশিন-পাঠযোগ্য ফাইল
- OpenAPI 3.1 স্পেসিফিকেশন কোড জেনারেটর এবং API ক্লায়েন্টের জন্য।
- llms-full.txt: এই সম্পূর্ণ রেফারেন্সটি একটি প্লেইন টেক্সট ফাইল হিসেবে।
- প্রতিটি ডক্স পেজ Markdown হিসেবে, উদাহরণস্বরূপ /en/docs/webhooks.md।