# Kod ile SMS nasıl gönderilir: Tek bir REST çağrısı ile Python, PHP, Node.js, Java, Go ve C#

> Kod üzerinden SMS göndermek, tek bir kimlik doğrulamalı HTTPS POST işlemidir: bir Bearer token, gönderici adı, hedef numara, mesaj ve mesaj türünü içeren bir JSON gövdesi ve karşılığında alınan bir mesaj kimliği. İşte aynı isteğin Python, PHP, Node.js, Java, Go ve C# dillerindeki örnekleri, ayrıca hata yönetimi ve canlı ortam tavsiyeleri.

- Kanonik URL: https://www.broadnet.me/tr/blog/send-sms-api-python-php-nodejs-java-csharp
- Dil: tr
- Son güncelleme: 2026-09-28
- Yayıncı: BroadNet (https://www.broadnet.me)

- Yayın tarihi: 2026-09-28
- Yazar: BroadNet Editorial Team

Kod üzerinden SMS göndermek için, Authorization: Bearer başlığı ve senderId, destinationNumber, mesaj ile messageType içeren bir JSON gövdesi ile https://api.broadnet.me/sms/sendSms adresine bir HTTPS POST isteği yapın. Başarılı bir çağrı, yanıt gövdesi olarak mesaj kimliği ile birlikte 200 HTTP döner; iletim sonucu daha sonra webhook'unuza bir iletim raporu (DLR) olarak ulaşır. Aşağıdaki her dil yalnızca kendi standart HTTP kütüphanesini kullanır; tek resmi SDK ise TypeScript ve Node.js içindir.

## Önemli çıkarımlar

- Uç nokta: POST https://api.broadnet.me/sms/sendSms, JSON gövdesi, Bearer token'ı.
- Gerekli alanlar: senderId, destinationNumber (artı işareti olmadan uluslararası format), mesaj, messageType (TEXT).
- Yanıt: Mesaj kimliği ile birlikte 200; iletim raporlarıyla eşleştirmek için bu kimliği saklayın.
- Hatalar: Eksik veya geçersiz bir token için ağ geçidinden 401 hatası alınır; API hataları durum (status), hata (error), mesaj (message), errorCode ve requestUri bilgilerini döndürür.
- Tek bir resmi SDK: TypeScript/Node.js için @broadnet/cpaas-sdk; diğer diller için istemcileri OpenAPI spesifikasyonundan oluşturun.

## Gönderim yapmadan önce nelere ihtiyacınız var?

- Bir ortam değişkeninde (aşağıdaki BROADNET_TOKEN) tutulan, asla kaynak kodunda veya bir mobil uygulamada bulundurulmaması gereken BroadNet hesabınızdan bir erişim belirteci.
- Hedef ülke için izin verilen bir gönderici adı; bazı ülkeler önce kayıt yapılmasını gerektirir.
- Uluslararası formatta bir hedef numara, örneğin 447700900123 (kurgusal bir Birleşik Krallık numarası).

Test erişimi mühendislerimiz tarafından sağlanır: test erişimi talep edin ve bir iş günü içinde test kimlik bilgilerini alın; ilk test mesajı genellikle bundan yaklaşık beş dakika sonra gönderilir. [Hızlı başlangıç](https://www.broadnet.me/developers/quickstart) kılavuzu süreci adım adım açıklar.

## İstek nasıl görünür?

İşte cURL içeren istek. Aşağıdaki her örnek aynı JSON gövdesini gönderir.

```
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 ile SMS nasıl gönderilir?

requests kütüphanesi ile json= argümanı, Content-Type başlığını sizin yerinize ayarlar.

```
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 ile SMS nasıl gönderilir?

PHP'ın curl uzantısı yeterlidir; herhangi bir pakete ihtiyaç duyulmaz.

```
<?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 ile SMS nasıl gönderilir?

Node.js 18 ve sonraki sürümlerde fetch yerleşik olarak bulunur:

```
// 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
```

Veya resmi TypeScript/Node.js SDK, @broadnet/cpaas-sdk kullanın:

```
// 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 ile SMS nasıl gönderilir?

Java 11 ve sonraki sürümler java.net.http.HttpClient içerir:

```
// 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 ile nasıl SMS gönderilir?

```
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# ve .NET ile nasıl SMS gönderilir?

.NET 6 ve sonraki sürümlerde NuGet paketine gerek yoktur: HttpClient ve System.Net.Http.Json yerleşik olarak bulunur.

```
// .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
```

## Geri dönüş değeri nedir ve hatalar nasıl yönetilir?

| Yanıt | Anlamı | Yapılması gerekenler |
|---|---|---|
| 200 + mesaj kimliği | İletim için kabul edildi | Kimliği kendi kaydınızla birlikte saklayın; DLR için bekleyin |
| 400 | Doğrulama hatası veya eksik alan | İsteği düzeltin; aynı şekilde tekrar denemeyin |
| 401 | Eksik veya geçersiz Bearer belirteci | Token'ı ve Authorization başlığını kontrol edin |
| 500 | Beklenmedik sunucu hatası | Gecikmeli olarak tekrar deneyin; yeniden göndermeden önce mesaj durumunu kontrol edin |

200 kodu, platformun mesajı kabul ettiği anlamına gelir, cihazın mesajı aldığı anlamına gelmez. İletim, iletim raporu ile bildirilir; [DLR nedir](https://www.broadnet.me/answers/what-is-dlr) ve [SMS iletim raporları ve hata kodları](https://www.broadnet.me/blog/sms-delivery-receipts-dlr-error-codes) bölümlerine göz atın. API yapısında idempotency başlığı bulunmamaktadır, bu nedenle mükerrer gönderimleri önlemek için dönen mesaj kimliğini (ID) saklayın ve yeniden göndermeden önce durumunu kontrol edin. Diğer tüm [hata kodları](https://www.broadnet.me/developers/error-codes) sayfasında listelenmiştir.

## Canlı ortama nasıl hazırlarsınız?

- Token'ı sunucu tarafında tutun. Token'ın çekilebileceği bir tarayıcı veya mobil uygulamadan asla SMS API çağrısı yapmayın; bunun yerine kendi backend sisteminizi çağırın.
- Uzun mesajları bilinçli olarak gönderin: GSM-7 her SMS için 160 karakter, Unicode (UCS-2) için ise 70 karakter kapasitesine sahiptir; daha uzun metinler ücretlendirilen segmentlere bölünür. [SMS karakter sınırına](https://www.broadnet.me/answers/sms-character-limit-explained) göz atın.
- Toplu gönderimleri kuyruğa alın ve hesabınızın iletim kapasitesine uyun; [hız sınırlarını](https://www.broadnet.me/developers/rate-limits) inceleyin.
- [Webhook](https://www.broadnet.me/developers/webhooks) üzerinden iletim raporlarını alın ve nihai durumu kaydedin.
- Numaraları önce uluslararası formatta doğrulayın; [E.164 telefon numarası doğrulaması](https://www.broadnet.me/blog/e164-phone-number-validation-msisdn) hakkında bilgi alın.

Çok yüksek hacimli işlemler veya mevcut bir telekom altyapısı için SMPP, REST'den daha uygun olabilir; [SMPP ile REST karşılaştırması](https://www.broadnet.me/compare/sms-api-vs-smpp) için inceleyin. BroadNet platformu, düğüm başına saniyede 30.000 SMS işleyebilir.

## Sıkça sorulan sorular

### Kod üzerinden SMS göndermenin en basit yolu nedir?

Bir erişim belirteci ve JSON gövdesi ile bir SMS API'sine yapılacak tek bir HTTPS POST isteğidir. BroadNet ile bu; senderId, destinationNumber, message ve messageType içeren POST https://api.broadnet.me/sms/sendSms isteğidir.

### Python, PHP veya Java için BroadNet SDK mevcut mu?

Hayır. TypeScript ve Node.js için @broadnet/cpaas-sdk adında tek bir resmi SDK bulunmaktadır. Diğer diller, burada gösterildiği gibi doğrudan REST API'yi çağırır veya OpenAPI spesifikasyonundan bir istemci oluşturur.

### Telefon numarası hangi formatta olmalıdır?

Ülke kodu içeren, artı işareti veya boşluk içermeyen uluslararası format; örneğin 447700900123.

### 200 yanıtı SMS'in iletildiği anlamına mı gelir?

Hayır. Bu, mesajın kabul edildiği anlamına gelir. İletim raporu (DLR), mesajın cihaza ulaşıp ulaşmadığını bildirir.

### SMS'i doğrudan bir Android veya iOS uygulamasından gönderebilir miyim?

Güvenli değil. Erişim jetonunun (access token) uygulama içinde yer almaması için API çağrısını sunucunuzda gerçekleştirin ve uygulamanın sunucunuzu çağırmasını sağlayın.

### Tam API referansını nerede bulabilirim?

[API referansında](https://www.broadnet.me/developers/api-reference) ve [OpenAPI spesifikasyonunda](https://www.broadnet.me/developers/openapi).

Kod örnekleri, yayınlanmış OpenAPI spesifikasyonuna göre kontrol edilen geliştirici sayfalarımızdaki örneklerdir. 28 Eylül 2026 tarihinde gözden geçirilmiştir. [Editörlük standartlarımıza](https://www.broadnet.me/about/editorial-standards) göz atın.
