मुख्य सामग्री पर जाएँ
HEXSMSDEVELOPERS
HEXSMS API · v1

SMS भेजने की सुविधा
अपनी सेवा से जोड़ें.

एक API कुंजी से शुरू करें। देश चुनें और एक अनुरोध में 1,000 नंबरों तक संदेश भेजें। हर नंबर का परिणाम भी देखें।

REST APIJSONप्रति अनुरोध अधिकतम 1,000 प्राप्तकर्ता

त्वरित शुरुआत

  1. API कुंजी बनाएँ

    पंजीकरण, स्वीकृति और OTP लॉगिन के बादAPI कुंजी प्रबंधनमें कुंजी जारी करें।

  2. क्रेडिट तैयार रखें

    API आपके खाते के क्रेडिट और कीमत का उपयोग करता है। अनुरोध कतार में जुड़ते ही राशि कटती है।

  3. संदेश भेजें और परिणाम देखें

    कैंपेन ID सहेजें और स्थिति API से परिणाम देखें।

Base URL https://hexsms.com

असली इंटीग्रेशन में API को अपने HTTPS सर्वर से कॉल करें। प्रीव्यू में असली कुंजी जारी करना और API से भेजना समर्थित नहीं है।

समर्थित देश

190+वैश्विक नेटवर्क कवरेज

प्रमुख कवरेज देश

  • संयुक्त राज्य
  • कनाडा
  • यूनाइटेड किंगडम
  • जर्मनी
  • फ़्रांस
  • स्पेन
  • इटली
  • नीदरलैंड
  • स्वीडन
  • नॉर्वे
  • डेनमार्क
  • पोलैंड
  • रोमानिया
  • चेकिया
  • ऑस्ट्रिया
  • स्विट्ज़रलैंड
  • आयरलैंड
  • पुर्तगाल
  • फ़िनलैंड
  • जापान
  • दक्षिण कोरिया
  • चीन
  • ताइवान
  • हाँग काँग (चीन विशेष प्रशासनिक क्षेत्र)
  • सिंगापुर
  • मलेशिया
  • इंडोनेशिया
  • फ़िलिपींस
  • थाईलैंड
  • वियतनाम
  • भारत
  • बांग्लादेश
  • पाकिस्तान
  • ऑस्ट्रेलिया
  • न्यूज़ीलैंड
  • ब्राज़ील
  • मैक्सिको
  • दक्षिण अफ़्रीका
  • नाइजीरिया
  • संयुक्त अरब अमीरात
  • सऊदी अरब

देश के अनुसार भेजने की उपलब्धता, दर और प्रेषक पंजीकरण शर्तें आपके खाते और स्थानीय नेटवर्क पर निर्भर करती हैं। भेजने से पहले देश की दर जाँच लें।

GET/api/v1/messages/countries

सक्रिय देश और लागू कीमत API से जाँचें। भेजने के अनुरोध में country से देश बताएँ और एक अनुरोध में एक ही देश के नंबर रखें। जिन देशों की कीमत सेट नहीं है, वहाँ भेजना स्वीकार नहीं होता।

200 OK
{ "currency": "USDT", "countries": [{ "country": "US", "unitPrice": 0.02 }] }

API कुंजी से प्रमाणीकरण करें

हर बाहरी API अनुरोध में नीचे दिया गया हेडर जोड़ें। लॉगिन कुकी या OTP कोड की ज़रूरत नहीं है।

HTTP
Authorization: Bearer hex_live_यहाँ_अपनी_जारी_कुंजी

कुंजी का मूल मान केवल जारी करते समय एक बार दिखाया जाता है। इसे सर्वर के एनवायरनमेंट वेरिएबल में रखें, फ़्रंटएंड कोड में कभी नहीं। रद्द की गई कुंजी या निलंबित खाते से API का उपयोग नहीं किया जा सकता। अधिकतम 5 कुंजियाँ बनाई जा सकती हैं।

POST/api/v1/messages

एक बार में 1,000 नंबरों तक भेजें

एक ही संदेश कई नंबरों पर भेजें। अनुरोध की जाँच के बाद उसे कतार में जोड़कर तुरंत जवाब दिया जाता है। हर नंबर पर अलग सामग्री भेजने के लिए अलग अनुरोध और नया Idempotency-Key उपयोग करें।

फ़ील्डप्रकारविवरण
country *stringISO 3166-1 alpha-2 देश कोड, जैसे US, GB, JP, KR। कोई डिफ़ॉल्ट देश नहीं है।
text *stringरिक्त स्थान हटाने के बाद 1–1,600 अक्षर। एक अनुरोध के सभी नंबरों को एक ही सामग्री जाती है।
recipients *string[]1–1,000 मोबाइल नंबर। + और देश कोड वाला फ़ॉर्मेट सुझाया जाता है। सभी नंबर country वाले देश के होने चाहिए।
Idempotency-Key *header8–100 अंग्रेज़ी अक्षर, अंक, हाइफ़न या अंडरस्कोर। हर अनुरोध के लिए अद्वितीय मान रखें।

एक भी अमान्य या डुप्लिकेट नंबर होने पर पूरा अनुरोध अस्वीकार होता है, और न कुछ भेजा जाता है न शुल्क कटता है। डुप्लिकेट की जाँच अंतरराष्ट्रीय फ़ॉर्मेट में बदले गए नंबरों पर होती है।

cURL · बल्क भेजना
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"]
  }'
202 Accepted · कतार में जोड़ा गया
{
  "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 केवल उदाहरण है।

GET/api/v1/messages/{id}

हर नंबर का परिणाम देखें

भेजने वाले API से मिला id उपयोग करें। केवल उसी खाते से API द्वारा भेजे गए कैंपेन देखे जा सकते हैं। यह सहेजे गए परिणाम लौटाता है। कैरियर के नवीनतम परिणाम चाहिए तो पहले नीचे दिया गया रीफ़्रेश API कॉल करें।

cURL · स्थिति देखें
curl 'https://hexsms.com/api/v1/messages/35bed356-b84a-452a-8e94-98b538972ecd?limit=1&offset=0' \
  -H 'Authorization: Bearer YOUR_API_KEY'
200 OK · प्रति नंबर परिणाम
{
  "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 से पहचानें।

DONE का मतलब डिलीवर होना नहीं है।

इसका मतलब है कि कतार की प्रोसेसिंग पूरी हो गई। असल डिलीवरी के लिए messages की status DELIVERED है या नहीं, जाँचें।

POST/api/v1/messages/{id}/refresh

नवीनतम डिलीवरी स्थिति लाएँ

कैरियर लॉग से सहेजे गए परिणाम अपडेट करें। अनुरोध बॉडी की ज़रूरत नहीं है। अपडेट के बाद GET से परिणाम फिर पढ़ें। एक कैंपेन 30 सेकंड में एक बार रीफ़्रेश हो सकता है। कैरियर लॉग भेजने के 48 घंटे तक उपलब्ध रहते हैं। वेबहुक सेट हो तो परिणाम अपने-आप भी अपडेट हो सकते हैं।

cURL · नवीनतम स्थिति रीफ़्रेश
curl -X POST 'https://hexsms.com/api/v1/messages/35bed356-b84a-452a-8e94-98b538972ecd/refresh' \
  -H 'Authorization: Bearer YOUR_API_KEY'
200 OK
{ "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" }
HTTPcodeक्या जाँचें
403COUNTRY_NOT_ENABLEDदेश के अनुसार कीमत और सक्रिय स्थिति जाँचें।
400INVALID_COUNTRYcountry में ISO देश कोड डालें।
400INVALID_BODY / INVALID_JSON / INVALID_TEXTJSON ऑब्जेक्ट और संदेश की सामग्री जाँचें।
400INVALID_RECIPIENTS / INVALID_PHONE / DUPLICATE_PHONEनंबरों की संख्या, फ़ॉर्मेट और डुप्लिकेट जाँचें।
400INVALID_IDEMPOTENCY_KEY / INVALID_PAGINATIONअनुरोध कुंजी या पेज मान जाँचें।
401UNAUTHORIZEDBearer API कुंजी नहीं है या अमान्य है।
402INSUFFICIENT_CREDITSक्रेडिट टॉप-अप करें।
403ACCOUNT_INACTIVEजाँचें कि खाता स्वीकृत और सक्रिय है।
404NOT_FOUNDकैंपेन ID और खाते का स्वामित्व जाँचें।
409IDEMPOTENCY_CONFLICTएक ही अनुरोध कुंजी अलग सामग्री के साथ उपयोग की गई।
413 / 415BODY_TOO_LARGE / UNSUPPORTED_MEDIA_TYPE128KiB या उससे छोटी JSON बॉडी भेजें।
429RATE_LIMITED / REFRESH_TOO_SOONRetry-After में दिए गए सेकंड तक रुककर फिर अनुरोध करें।
500 / 502INTERNAL_ERROR / PROVIDER_UNAVAILABLEथोड़ी देर बाद फिर कोशिश करें। भेजने को दोबारा आज़माते समय वही अनुरोध कुंजी उपयोग करें।
503PREVIEW_ONLYप्रीव्यू में असली API कॉल नहीं किया जा सकता।

भेजना, स्थिति और रीफ़्रेश मिलाकर प्रति API कुंजी प्रति मिनट 120 अनुरोध तक किए जा सकते हैं। सीमा लगने पर Retry-After हेडर देखें। यह API सर्वर-से-सर्वर उपयोग के लिए है; ब्राउज़र CORS कॉल समर्थित नहीं हैं।

Node.js से जोड़ें

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.

हर कार्य के लिए एक बार अनुरोध कुंजी बनाएँ और जवाब न मिलने पर दोबारा भेजते समय भी वही मान उपयोग करें। सफल कार्य को नई कुंजी से फिर भेजने पर वह अलग भेजना माना जाएगा।