# کوڈ کے ذریعے SMS کیسے بھیجیں: Python، PHP، Node.js، Java، Go اور C# کے لیے صرف ایک REST کال

> کوڈ کے ذریعے SMS بھیجنا ایک مستند HTTPS POST ہے: ایک Bearer ٹوکن، سینڈر ID، منزل کا نمبر، پیغام اور پیغام کی قسم کے ساتھ ایک JSON باڈی، اور واپس آنے والا ایک میسج ID۔ یہاں Python، PHP، Node.js، Java، Go اور C# میں وہی درخواست، نیز ایرر ہینڈلنگ اور پروڈکشن کے مشورے دیے گئے ہیں۔

- کینونیکل URL: https://www.broadnet.me/ur/blog/send-sms-api-python-php-nodejs-java-csharp
- زبان: ur
- آخری اپ ڈیٹ: 2026-09-28
- ناشر: BroadNet (https://www.broadnet.me)

- تاریخِ اشاعت: 2026-09-28
- مصنف: BroadNet Editorial Team

کوڈ کے ذریعے SMS بھیجنے کے لیے، Authorization: Bearer ہیڈر اور senderId، destinationNumber، پیغام اور messageType پر مشتمل JSON باڈی کے ساتھ https://api.broadnet.me/sms/sendSms کو ایک HTTPS POST کریں۔ ایک کامیاب کال جواب کے طور پر میسج ID کے ساتھ HTTP 200 واپس کرتی ہے؛ ڈیلیوری کا نتیجہ بعد میں آپ کے webhook پر ڈیلیوری رپورٹ (DLR) کے طور پر موصول ہوتا ہے۔ نیچے دی گئی ہر زبان صرف اپنی معیاری HTTP لائبریری استعمال کرتی ہے؛ واحد آفیشل SDK TypeScript اور Node.js کے لیے ہے۔

## اہم نکات

- اینڈ پوائنٹ: POST https://api.broadnet.me/sms/sendSms, JSON باڈی، Bearer ٹوکن۔
- ضروری فیلڈز: senderId، destinationNumber (پلس سائن کے بغیر انٹرنیشنل فارمیٹ)، پیغام، messageType (TEXT)۔
- رسپانس: میسج ID کے ساتھ 200؛ ڈیلیوری رپورٹس سے مطابقت کے لیے اسے محفوظ رکھیں۔
- ایرر: ٹوکن کے نہ ہونے یا غلط ہونے کی صورت میں گیٹ وے سے 401 ملتا ہے؛ API ایررز میں status، error، message، errorCode اور requestUri واپس ملتے ہیں۔
- ایک آفیشل SDK: TypeScript/Node.js کے لیے @broadnet/cpaas-sdk؛ OpenAPI spec سے دیگر زبانوں کے لیے کلائنٹس تیار کریں۔

## بھیجنے سے پہلے آپ کو کس چیز کی ضرورت ہے؟

- آپ کے BroadNet اکاؤنٹ سے ایک access token، جسے انوائرمنٹ ویری ایبل (نیچے BROADNET_TOKEN) میں رکھا جائے، اسے کبھی بھی سورس کوڈ یا موبائل ایپ میں نہ رکھیں۔
- ایک سینڈر ID جس کی منزل والے ملک میں اجازت ہو؛ کچھ ممالک میں پہلے رجسٹریشن کی ضرورت ہوتی ہے۔
- انٹرنیشنل فارمیٹ میں ایک منزل والا نمبر، مثال کے طور پر 447700900123 (ایک فرضی UK نمبر)۔

ٹیسٹ رسائی ہمارے انجینئرز کی طرف سے فراہم کی جاتی ہے: اس کی درخواست کریں اور آپ کو ایک کاروباری دن کے اندر ٹیسٹ کریڈنشلز مل جائیں گے، اور پہلا ٹیسٹ میسج عام طور پر اس کے تقریباً پانچ منٹ بعد چلا جاتا ہے۔ [quickstart](https://www.broadnet.me/developers/quickstart) اس کے بارے میں تفصیل سے بتاتا ہے۔

## ریکوئسٹ کیسی دکھتی ہے؟

یہ cURL کے ساتھ ریکوئسٹ ہے۔ نیچے دیا گیا ہر مثال ایک ہی JSON باڈی بھیجتا ہے۔

```
curl -X POST https://api.broadnet.me/sms/sendSms \
  -H "Authorization: Bearer $BROADNET_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "senderId": "BroadNet",
    "destinationNumber": "447700900123",
    "message": "Your verification code is 482913",
    "messageType": "TEXT"
  }'

# 200 OK → response body is the message ID, e.g. 2603121407537573731
```

## آپ Python کے ساتھ SMS کیسے بھیجتے ہیں؟

requests لائبریری کے ساتھ، json= آرگیومنٹ آپ کے لیے Content-Type ہیڈر سیٹ کر دیتا ہے۔

```
import os, requests

r = requests.post(
    "https://api.broadnet.me/sms/sendSms",
    headers={"Authorization": f"Bearer {os.environ['BROADNET_TOKEN']}"},
    json={
        "senderId": "BroadNet",
        "destinationNumber": "447700900123",
        "message": "Your verification code is 482913",
        "messageType": "TEXT",
    },
)

print(r.status_code, r.text)  # message ID
```

## آپ PHP کے ساتھ SMS کیسے بھیجتے ہیں؟

PHP کی curl ایکسٹینشن کافی ہے؛ کسی پیکج کی ضرورت نہیں ہے۔

```
<?php
$ch = curl_init("https://api.broadnet.me/sms/sendSms");
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        "Authorization: Bearer " . getenv("BROADNET_TOKEN"),
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS     => json_encode([
        "senderId"          => "BroadNet",
        "destinationNumber" => "447700900123",
        "message"           => "Your verification code is 482913",
        "messageType"       => "TEXT",
    ]),
]);

$messageId = curl_exec($ch);
echo $messageId;
```

## آپ Node.js کے ساتھ SMS کیسے بھیجتے ہیں؟

Node.js 18 اور اس کے بعد کے ورژنز میں fetch بلٹ ان ہے:

```
// Node.js 18+ (fetch)
const res = await fetch("https://api.broadnet.me/sms/sendSms", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.BROADNET_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    senderId: "BroadNet",
    destinationNumber: "447700900123",
    message: "Your verification code is 482913",
    messageType: "TEXT",
  }),
});

console.log(await res.text()); // message ID
```

یا آفیشل TypeScript/Node.js SDK، @broadnet/cpaas-sdk استعمال کریں:

```
// npm install @broadnet/cpaas-sdk axios
import { Configuration, SMSSMSApi } from "@broadnet/cpaas-sdk";

const sms = new SMSSMSApi(
  new Configuration({
    basePath: "https://api.broadnet.me",
    accessToken: process.env.BROADNET_TOKEN!,
  }),
);

const res = await sms.smsSendsmsPost({
  sMSSmsRequest: {
    senderId: "BroadNet",
    destinationNumber: "447700900123",
    message: "Your verification code is 482913",
    messageType: "TEXT",
  },
});

console.log(res.data); // message ID
```

## آپ Java کے ساتھ SMS کیسے بھیجتے ہیں؟

Java 11 اور اس کے بعد کے ورژن میں java.net.http.HttpClient شامل ہے:

```
// Java 11+ — java.net.http is built in, nothing to install
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class SendSms {
    public static void main(String[] args) throws Exception {
        String json = "{"
            + "\"senderId\": \"BroadNet\", "
            + "\"destinationNumber\": \"447700900123\", "
            + "\"message\": \"Your verification code is 482913\", "
            + "\"messageType\": \"TEXT\""
            + "}";

        HttpRequest req = HttpRequest.newBuilder(URI.create("https://api.broadnet.me/sms/sendSms"))
            .header("Authorization", "Bearer " + System.getenv("BROADNET_TOKEN"))
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(json))
            .build();

        HttpResponse<String> res = HttpClient.newHttpClient()
            .send(req, HttpResponse.BodyHandlers.ofString());

        System.out.println(res.statusCode() + " " + res.body()); // 200 + message ID
    }
}
```

## آپ Go کے ساتھ SMS کیسے بھیجتے ہیں؟

```
package main

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	body := []byte(`{
		"senderId": "BroadNet",
		"destinationNumber": "447700900123",
		"message": "Your verification code is 482913",
		"messageType": "TEXT"
	}`)

	req, err := http.NewRequest(http.MethodPost, "https://api.broadnet.me/sms/sendSms", bytes.NewReader(body))
	if err != nil {
		panic(err)
	}
	req.Header.Set("Authorization", "Bearer "+os.Getenv("BROADNET_TOKEN"))
	req.Header.Set("Content-Type", "application/json")

	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()

	id, _ := io.ReadAll(res.Body)
	fmt.Println(res.StatusCode, string(id)) // 200 + message ID
}
```

## آپ C# اور .NET کے ساتھ SMS کیسے بھیجتے ہیں؟

.NET 6 اور اس کے بعد کے ورژن کے لیے کسی NuGet پیکیج کی ضرورت نہیں ہے: HttpClient اور System.Net.Http.Json پہلے سے موجود ہیں۔

```
// .NET 6+ console app (Program.cs) — HttpClient is built in, no NuGet package
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Net.Http.Json;

using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
    "Bearer", Environment.GetEnvironmentVariable("BROADNET_TOKEN"));

// PostAsJsonAsync sends Content-Type: application/json
var res = await http.PostAsJsonAsync("https://api.broadnet.me/sms/sendSms", new
{
    senderId = "BroadNet",
    destinationNumber = "447700900123",
    message = "Your verification code is 482913",
    messageType = "TEXT",
});

var id = await res.Content.ReadAsStringAsync();
Console.WriteLine($"{(int)res.StatusCode} {id}"); // 200 + message ID
```

## جواب میں کیا واپس آتا ہے، اور آپ ایررز (errors) کو کیسے ہینڈل کرتے ہیں؟

| رسپانس (Response) | مطلب | کیا کرنا ہے |
|---|---|---|
| 200 + میسج ID | ڈیلیوری کے لیے قبول کر لیا گیا | ID کو اپنے ریکارڈ کے ساتھ محفوظ کریں؛ DLR کا انتظار کریں |
| 400 | تصدیق کی غلطی یا فیلڈ کا نہ ہونا | درخواست کو درست کریں؛ بغیر تبدیلی کے دوبارہ کوشش نہ کریں |
| 401 | مفقود یا غلط Bearer ٹوکن | ٹکن اور Authorization ہیڈر چیک کریں |
| 500 | غیر متوقع سرور ایرر | بیک آف (backoff) کے ساتھ دوبارہ کوشش کریں؛ دوبارہ بھیجنے سے پہلے میسج کا اسٹیٹس چیک کریں |

200 کا مطلب ہے کہ پلیٹ فارم نے میسج قبول کر لیا ہے، اس کا یہ مطلب نہیں کہ ہینڈ سیٹ تک میسج پہنچ گیا ہے۔ ڈیلیوری کی اطلاع ڈیلیوری رپورٹ کے ذریعے دی جاتی ہے؛ [DLR کیا ہے](https://www.broadnet.me/answers/what-is-dlr) دیکھیں اور [SMS ڈیلیوری رپورٹس اور ایرر کوڈز](https://www.broadnet.me/blog/sms-delivery-receipts-dlr-error-codes) دیکھیں۔ API میں کوئی idempotency ہیڈر نہیں ہے، اس لیے ڈپلیکیٹس سے بچنے کے لیے واپس ملنے والی میسج ID کو محفوظ رکھیں اور دوبارہ بھیجنے سے پہلے اس کا اسٹیٹس چیک کریں۔ [ایرر کوڈز](https://www.broadnet.me/developers/error-codes) والے صفحے پر باقی تفصیلات موجود ہیں۔

## آپ اسے پروڈکشن کے لیے تیار کیسے کرتے ہیں؟

- ٹکن کو سرور سائیڈ پر رکھیں۔ SMS API کو کبھی بھی براؤزر یا موبائل ایپ سے کال نہ کریں جہاں سے ٹکن نکالا جا سکے؛ اس کے بجائے اپنے بیک اینڈ (backend) کو کال کریں۔
- لمبے میسجز جان بوجھ کر بھیجیں: GSM-7 میں ہر SMS کے لیے 160 کریکٹرز، یونیکوڈ (UCS-2) کے لیے 70 کریکٹرز آتے ہیں، اور طویل ٹیکسٹ کو بل شدہ حصوں (segments) میں تقسیم کر دیا جاتا ہے۔ [SMS کریکٹر کی حد](https://www.broadnet.me/answers/sms-character-limit-explained) دیکھیں۔
- بلک SMS بھیجنے کے لیے کیو (Queue) کا استعمال کریں اور اپنے اکاؤنٹ کی تھرو پٹ کا خیال رکھیں؛ [ریٹ لمٹس](https://www.broadnet.me/developers/rate-limits) پڑھیں۔
- [webhook](https://www.broadnet.me/developers/webhooks) پر ڈیلیوری رپورٹس حاصل کریں اور حتمی اسٹیٹس محفوظ کریں۔
- نمبروں کو پہلے انٹرنیشنل فارمیٹ میں تبدیل کریں؛ [E.164 فون نمبر ویلیڈیشن](https://www.broadnet.me/blog/e164-phone-number-validation-msisdn) دیکھیں۔

بہت زیادہ حجم یا موجودہ ٹیلی کام اسٹیک کے لیے، REST کے مقابلے میں SMPP زیادہ موزوں ہو سکتا ہے؛ [SMPP بمقابلہ REST](https://www.broadnet.me/compare/sms-api-vs-smpp) دیکھیں۔ BroadNet کا پلیٹ فارم فی نوڈ 30,000 SMS فی سیکنڈ تک ہینڈل کرتا ہے۔

## اکثر پوچھے جانے والے سوالات

### کوڈ کے ذریعے SMS بھیجنے کا سب سے آسان طریقہ کیا ہے؟

ایک ایکسیس ٹوکن اور JSON باڈی کے ساتھ SMS API کو ایک HTTPS POST کریں۔ BroadNet کے ساتھ یہ POST https://api.broadnet.me/sms/sendSms ہے جس میں senderId، destinationNumber، میسج اور messageType شامل ہیں۔

### کیا Python، PHP یا Java کے لیے کوئی BroadNet SDK موجود ہے؟

نہیں، TypeScript اور Node.js کے لیے صرف ایک آفیشل SDK، @broadnet/cpaas-sdk موجود ہے۔ دیگر زبانیں REST API کو براہ راست کال کرتی ہیں، جیسا کہ یہاں دکھایا گیا ہے، یا OpenAPI spec سے کلائنٹ تیار کرتی ہیں۔

### فون نمبر کس فارمیٹ میں ہونا چاہیے؟

کنٹری کوڈ کے ساتھ انٹرنیشنل فارمیٹ، جس میں پلس (+) کا نشان یا اسپیس نہیں ہونی چاہیے، مثال کے طور پر 447700900123۔

### کیا 200 رسپانس کا مطلب یہ ہے کہ SMS ڈیلیور ہو گیا ہے؟

نہیں، اس کا مطلب ہے کہ میسج قبول کر لیا گیا ہے۔ ڈیلیوری رپورٹ (DLR) بتاتی ہے کہ آیا میسج ہینڈ سیٹ تک پہنچ گیا ہے۔

### کیا میں براہ راست Android یا iOS ایپ سے SMS بھیج سکتا ہوں؟

نہیں، یہ محفوظ نہیں ہے۔ API کال کو اپنے سرور پر رکھیں تاکہ ایکسیس ٹوکن کبھی بھی ایپ کے اندر نہ جائے، اور ایپ کے ذریعے اپنے سرور کو کال کریں۔

### مجھے مکمل API ریفرنس کہاں ملے گا؟

[API ریفرنس](https://www.broadnet.me/developers/api-reference) اور [OpenAPI سپیک](https://www.broadnet.me/developers/openapi) میں۔

کوڈ سیمپلز وہی ہیں جو ہمارے ڈویلپر پیجز پر موجود ہیں، جنہیں شائع شدہ OpenAPI سپیک کے مطابق چیک کیا گیا ہے۔ 28 ستمبر 2026 کو نظرثانی کی گئی۔ ہمارے [ایڈیٹوریل اسٹینڈرڈز](https://www.broadnet.me/about/editorial-standards) دیکھیں۔
