SMS भेजने की सुविधा
अपनी सेवा से जोड़ें.
एक API कुंजी से शुरू करें। देश चुनें और एक अनुरोध में 1,000 नंबरों तक संदेश भेजें। हर नंबर का परिणाम भी देखें।
त्वरित शुरुआत
- API कुंजी बनाएँ
पंजीकरण, स्वीकृति और OTP लॉगिन के बादAPI कुंजी प्रबंधनमें कुंजी जारी करें।
- क्रेडिट तैयार रखें
API आपके खाते के क्रेडिट और कीमत का उपयोग करता है। अनुरोध कतार में जुड़ते ही राशि कटती है।
- संदेश भेजें और परिणाम देखें
कैंपेन ID सहेजें और स्थिति API से परिणाम देखें।
https://hexsms.comअसली इंटीग्रेशन में API को अपने HTTPS सर्वर से कॉल करें। प्रीव्यू में असली कुंजी जारी करना और API से भेजना समर्थित नहीं है।
समर्थित देश
प्रमुख कवरेज देश
- संयुक्त राज्य
- कनाडा
- यूनाइटेड किंगडम
- जर्मनी
- फ़्रांस
- स्पेन
- इटली
- नीदरलैंड
- स्वीडन
- नॉर्वे
- डेनमार्क
- पोलैंड
- रोमानिया
- चेकिया
- ऑस्ट्रिया
- स्विट्ज़रलैंड
- आयरलैंड
- पुर्तगाल
- फ़िनलैंड
- जापान
- दक्षिण कोरिया
- चीन
- ताइवान
- हाँग काँग (चीन विशेष प्रशासनिक क्षेत्र)
- सिंगापुर
- मलेशिया
- इंडोनेशिया
- फ़िलिपींस
- थाईलैंड
- वियतनाम
- भारत
- बांग्लादेश
- पाकिस्तान
- ऑस्ट्रेलिया
- न्यूज़ीलैंड
- ब्राज़ील
- मैक्सिको
- दक्षिण अफ़्रीका
- नाइजीरिया
- संयुक्त अरब अमीरात
- सऊदी अरब
देश के अनुसार भेजने की उपलब्धता, दर और प्रेषक पंजीकरण शर्तें आपके खाते और स्थानीय नेटवर्क पर निर्भर करती हैं। भेजने से पहले देश की दर जाँच लें।
GET/api/v1/messages/countries
सक्रिय देश और लागू कीमत API से जाँचें। भेजने के अनुरोध में country से देश बताएँ और एक अनुरोध में एक ही देश के नंबर रखें। जिन देशों की कीमत सेट नहीं है, वहाँ भेजना स्वीकार नहीं होता।
{ "currency": "USDT", "countries": [{ "country": "US", "unitPrice": 0.02 }] }API कुंजी से प्रमाणीकरण करें
हर बाहरी API अनुरोध में नीचे दिया गया हेडर जोड़ें। लॉगिन कुकी या OTP कोड की ज़रूरत नहीं है।
Authorization: Bearer hex_live_यहाँ_अपनी_जारी_कुंजीकुंजी का मूल मान केवल जारी करते समय एक बार दिखाया जाता है। इसे सर्वर के एनवायरनमेंट वेरिएबल में रखें, फ़्रंटएंड कोड में कभी नहीं। रद्द की गई कुंजी या निलंबित खाते से API का उपयोग नहीं किया जा सकता। अधिकतम 5 कुंजियाँ बनाई जा सकती हैं।
/api/v1/messagesएक बार में 1,000 नंबरों तक भेजें
एक ही संदेश कई नंबरों पर भेजें। अनुरोध की जाँच के बाद उसे कतार में जोड़कर तुरंत जवाब दिया जाता है। हर नंबर पर अलग सामग्री भेजने के लिए अलग अनुरोध और नया Idempotency-Key उपयोग करें।
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
country * | string | ISO 3166-1 alpha-2 देश कोड, जैसे US, GB, JP, KR। कोई डिफ़ॉल्ट देश नहीं है। |
text * | string | रिक्त स्थान हटाने के बाद 1–1,600 अक्षर। एक अनुरोध के सभी नंबरों को एक ही सामग्री जाती है। |
recipients * | string[] | 1–1,000 मोबाइल नंबर। + और देश कोड वाला फ़ॉर्मेट सुझाया जाता है। सभी नंबर country वाले देश के होने चाहिए। |
Idempotency-Key * | header | 8–100 अंग्रेज़ी अक्षर, अंक, हाइफ़न या अंडरस्कोर। हर अनुरोध के लिए अद्वितीय मान रखें। |
एक भी अमान्य या डुप्लिकेट नंबर होने पर पूरा अनुरोध अस्वीकार होता है, और न कुछ भेजा जाता है न शुल्क कटता है। डुप्लिकेट की जाँच अंतरराष्ट्रीय फ़ॉर्मेट में बदले गए नंबरों पर होती है।
curl -X POST 'https://hexsms.com/api/v1/messages' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: notice-20261024-001' \
-d '{
"country": "US",
"text": "Your verification code is 482913.",
"recipients": ["+12025550123", "+12025550124"]
}'{
"id": "35bed356-b84a-452a-8e94-98b538972ecd",
"country": "US",
"state": "RUNNING",
"total": 2,
"segments": 1,
"unitPrice": 0.025,
"cost": 0.05,
"createdAt": 1792800000000,
"note": null,
"replayed": false
}उसी खाते, उसी Idempotency-Key, उसी सामग्री और नंबर क्रम से दोबारा भेजने पर बिना अतिरिक्त भेजे या शुल्क के मूल परिणाम लौटाया जाता है (200, replayed: true)। सामग्री अलग हो तो 409 मिलता है। API कुंजी बदलने पर भी डुप्लिकेट रोकथाम बनी रहती है। अनुरोध कुंजियाँ कभी समाप्त नहीं होतीं।
कीमत ऐसे तय होती है
नंबरों की संख्या × सेगमेंट (segments) × खाते की इकाई कीमतसे गणना होती है। UCS-2 में 70 अक्षर तक 1 सेगमेंट, उसके बाद 67 अक्षर प्रति सेगमेंट। GSM-7 के मूल अक्षरों में 160 अक्षर तक 1 सेगमेंट, उसके बाद 153 प्रति सेगमेंट। एक्सटेंशन अक्षर दो गिने जाते हैं, इमोजी UTF-16 लंबाई से। unitPrice और cost USDT में हैं। जवाब में दी गई कीमत ही लागू कीमत है; ऊपर 0.025 केवल उदाहरण है।
/api/v1/messages/{id}हर नंबर का परिणाम देखें
भेजने वाले API से मिला id उपयोग करें। केवल उसी खाते से API द्वारा भेजे गए कैंपेन देखे जा सकते हैं। यह सहेजे गए परिणाम लौटाता है। कैरियर के नवीनतम परिणाम चाहिए तो पहले नीचे दिया गया रीफ़्रेश API कॉल करें।
curl 'https://hexsms.com/api/v1/messages/35bed356-b84a-452a-8e94-98b538972ecd?limit=1&offset=0' \
-H 'Authorization: Bearer YOUR_API_KEY'{
"id": "35bed356-b84a-452a-8e94-98b538972ecd",
"country": "US",
"state": "DONE",
"total": 2, "segments": 1,
"unitPrice": 0.025, "cost": 0.05,
"createdAt": 1792800000000, "note": null,
"summary": { "DELIVERED": 1, "PENDING": 1 },
"messages": [
{
"id": "d2787184-d8b8-49c6-9c15-1db90a6d5516",
"to": "12025550123",
"status": "DELIVERED",
"statusName": "DELIVERED_TO_HANDSET",
"description": "Message delivered to handset",
"error": null,
"updatedAt": 1792800005000
}
],
"pagination": { "limit": 1, "offset": 0, "nextOffset": 1 }
}limit 1–1,000 (डिफ़ॉल्ट 100) और offset 0–1,000 (डिफ़ॉल्ट 0) है। nextOffset null हो तो यह अंतिम पेज है। summary सभी नंबरों की स्थिति-वार गिनती है। to बिना + के अंतरराष्ट्रीय अंकों में, और समय Unix मिलीसेकंड में लौटाया जाता है। परिणाम का क्रम मूल भेजने के क्रम से अलग हो सकता है; हर message को उसके id से पहचानें।
इसका मतलब है कि कतार की प्रोसेसिंग पूरी हो गई। असल डिलीवरी के लिए messages की status DELIVERED है या नहीं, जाँचें।
/api/v1/messages/{id}/refreshनवीनतम डिलीवरी स्थिति लाएँ
कैरियर लॉग से सहेजे गए परिणाम अपडेट करें। अनुरोध बॉडी की ज़रूरत नहीं है। अपडेट के बाद GET से परिणाम फिर पढ़ें। एक कैंपेन 30 सेकंड में एक बार रीफ़्रेश हो सकता है। कैरियर लॉग भेजने के 48 घंटे तक उपलब्ध रहते हैं। वेबहुक सेट हो तो परिणाम अपने-आप भी अपडेट हो सकते हैं।
curl -X POST 'https://hexsms.com/api/v1/messages/35bed356-b84a-452a-8e94-98b538972ecd/refresh' \
-H 'Authorization: Bearer YOUR_API_KEY'{ "id": "35bed356-b84a-452a-8e94-98b538972ecd", "updated": 2 }updated अपडेट की गई पंक्तियों की संख्या है। संदेश अभी कतार में हों या नए परिणाम न हों तो यह 0 हो सकता है। कम से कम 10 सेकंड के अंतराल पर GET कॉल करें और ज़रूरत होने पर ही refresh करें।
स्थिति कोड समझें
कैंपेन state
PREPARING तैयारी · RUNNING प्रोसेसिंग · PAUSED रोका गया · DONE कतार प्रोसेस पूरी · CANCELED रद्द
| प्रति नंबर status | अर्थ |
|---|---|
| QUEUED | कतार में प्रतीक्षा। |
| SENDING | कैरियर को भेजा जा रहा है। |
| PENDING | कैरियर ने स्वीकार किया; अंतिम परिणाम की प्रतीक्षा। |
| DELIVERED | प्राप्तकर्ता के डिवाइस पर डिलीवर हुआ। |
| UNDELIVERABLE | डिलीवर नहीं हो सका। |
| EXPIRED | डिलीवरी की वैधता अवधि समाप्त हो गई। |
| REJECTED | अनुरोध अस्वीकार हुआ या प्रोसेसिंग त्रुटि हुई। |
| CANCELED | भेजने से पहले रद्द किया गया। |
| UNKNOWN | परिणाम अभी ज्ञात नहीं है। |
कैरियर नए स्थिति कोड जोड़ सकते हैं, इसलिए अज्ञात status को भी संभालें। विफलता का कारण statusName, description और error में देखें।
त्रुटियाँ कैसे संभालें
{ "error": "पर्याप्त क्रेडिट नहीं है। टॉप-अप करके फिर अनुरोध करें।", "code": "INSUFFICIENT_CREDITS" }| HTTP | code | क्या जाँचें |
|---|---|---|
| 403 | COUNTRY_NOT_ENABLED | देश के अनुसार कीमत और सक्रिय स्थिति जाँचें। |
| 400 | INVALID_COUNTRY | country में ISO देश कोड डालें। |
| 400 | INVALID_BODY / INVALID_JSON / INVALID_TEXT | JSON ऑब्जेक्ट और संदेश की सामग्री जाँचें। |
| 400 | INVALID_RECIPIENTS / INVALID_PHONE / DUPLICATE_PHONE | नंबरों की संख्या, फ़ॉर्मेट और डुप्लिकेट जाँचें। |
| 400 | INVALID_IDEMPOTENCY_KEY / INVALID_PAGINATION | अनुरोध कुंजी या पेज मान जाँचें। |
| 401 | UNAUTHORIZED | Bearer API कुंजी नहीं है या अमान्य है। |
| 402 | INSUFFICIENT_CREDITS | क्रेडिट टॉप-अप करें। |
| 403 | ACCOUNT_INACTIVE | जाँचें कि खाता स्वीकृत और सक्रिय है। |
| 404 | NOT_FOUND | कैंपेन ID और खाते का स्वामित्व जाँचें। |
| 409 | IDEMPOTENCY_CONFLICT | एक ही अनुरोध कुंजी अलग सामग्री के साथ उपयोग की गई। |
| 413 / 415 | BODY_TOO_LARGE / UNSUPPORTED_MEDIA_TYPE | 128KiB या उससे छोटी JSON बॉडी भेजें। |
| 429 | RATE_LIMITED / REFRESH_TOO_SOON | Retry-After में दिए गए सेकंड तक रुककर फिर अनुरोध करें। |
| 500 / 502 | INTERNAL_ERROR / PROVIDER_UNAVAILABLE | थोड़ी देर बाद फिर कोशिश करें। भेजने को दोबारा आज़माते समय वही अनुरोध कुंजी उपयोग करें। |
| 503 | PREVIEW_ONLY | प्रीव्यू में असली API कॉल नहीं किया जा सकता। |
भेजना, स्थिति और रीफ़्रेश मिलाकर प्रति API कुंजी प्रति मिनट 120 अनुरोध तक किए जा सकते हैं। सीमा लगने पर Retry-After हेडर देखें। यह API सर्वर-से-सर्वर उपयोग के लिए है; ब्राउज़र CORS कॉल समर्थित नहीं हैं।
Node.js से जोड़ें
const response = await fetch('https://hexsms.com/api/v1/messages', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + process.env.HEXSMS_API_KEY,
'Content-Type': 'application/json',
'Idempotency-Key': 'notice-20261024-001'
},
body: JSON.stringify({
country: 'US',
text: 'Your order is on its way.',
recipients: ['+12025550123', '+12025550124']
})
});
const result = await response.json();
if (!response.ok) throw new Error(result.code + ': ' + result.error);
console.log(result.id); // Use this ID to check delivery status.हर कार्य के लिए एक बार अनुरोध कुंजी बनाएँ और जवाब न मिलने पर दोबारा भेजते समय भी वही मान उपयोग करें। सफल कार्य को नई कुंजी से फिर भेजने पर वह अलग भेजना माना जाएगा।