शुरू करें
Bulk SMS API रेफरेंस
BulkSMSAPI डेवलपर्स के लिए एक बल्क SMS API है: REST के माध्यम से 227 देशों में एक रिक्वेस्ट पर एक टेक्स्ट या 10,000 नंबर तक का बैच भेजें, हर मैसेज को साइन्ड वेबहुक के साथ ट्रैक करें, और प्रीपेड बैलेंस से प्रति मैसेज भुगतान करें। यह रेफरेंस API के हर एंडपॉइंट, फील्ड, इवेंट और एरर को कवर करता है। हर पेज मार्कडाउन में भी उपलब्ध है: इसके एड्रेस में .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 | संदेश, नवीनतम पहले, बैच या स्थिति के अनुसार फ़िल्टर करें | Yes |
| GET /v1/batches/{id} | एक बैच जिसमें प्रत्येक स्थिति की गणना हो | Yes |
| GET /v1/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।