# コードからSMSを送信する方法：1回のREST呼び出しでPython、PHP、Node.js、Java、Go、C#に対応

> コードからSMSを送信するには、認証済みの1回のHTTPS POSTを行います。具体的には、Bearerトークン、送信元ID・宛先番号・メッセージ・メッセージタイプを含むJSONボディ、そして返されるメッセージIDが必要です。以下に、Python、PHP、Node.js、Java、Go、C#での同様のリクエスト例に加え、エラーハンドリングと本番環境への導入に関するアドバイスを記載します。

- 正規URL: https://www.broadnet.me/ja/blog/send-sms-api-python-php-nodejs-java-csharp
- 言語: ja
- 最終更新日: 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に対して1回のHTTPS POSTを行います。呼び出しが成功すると、レスポンスボディにメッセージIDを含むHTTP 200が返されます。配信結果は、後ほど配信レポート（DLR）としてWebhookに届きます。以下の各言語では、標準のHTTPライブラリのみを使用しています。唯一の公式なSDKは、TypeScriptおよびNode.js用です。

## 重要なポイント

- エンドポイント：https://api.broadnet.me/sms/sendSms,にJSONボディとBearerトークンをPOSTします。
- 必須フィールド：senderId、destinationNumber（プラス記号なしの国際形式）、メッセージ、messageType（TEXT）。
- レスポンス：メッセージIDを含む200。配信レポートと照合するために保持してください。
- エラー：トークンが不足しているか無効な場合は、ゲートウェイから401が返されます。APIエラーの場合は、status、error、message、errorCode、requestUriが返されます。
- 唯一の公式SDK: TypeScript/Node.js用の @broadnet/cpaas-sdk。OpenAPI仕様から他の言語用のクライアントを生成できます。

## 送信前に必要なものは？

- BroadNetアカウントのアクセストークンです。環境変数（以下のBROADNET_TOKEN）に保存し、ソースコードやモバイルアプリには決して含めないでください。
- 送信先の国で許可されている送信元ID。国によっては事前の登録が必要です。
- 国際形式の宛先番号。例：447700900123（架空の英国番号）。

テストアクセスは当社のエンジニアが提供します。テストアクセスを申し込むと、1営業日以内にテスト用認証情報が発行され、通常はその約5分後に最初のテストメッセージが送信されます。詳細は [クイックスタート](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
```

## 返却される値とエラーハンドリングの方法は？

| レスポンス | 意味 | 対処方法 |
|---|---|---|
| 200 +メッセージID | 配信受付済み | IDを自社レコードに保存し、DLRを待機してください |
| 400 | バリデーションエラーまたは必須項目の不足 | リクエストを修正してください。内容を変更せずに再試行しないでください |
| 401 | Bearerトークンが不足しているか、無効です | トークンとAuthorizationヘッダーを確認してください |
| 500 | 予期しないサーバーエラーが発生しました | バックオフを用いて再試行してください。再送前にメッセージステータスを確認してください |

200はプラットフォームがメッセージを受理したことを意味し、端末が受信したことを意味するものではありません。配信状況は配信レポートで確認できます。[DLRとは何か](https://www.broadnet.me/answers/what-is-dlr)および[SMSの配信レポートとエラーコード](https://www.broadnet.me/blog/sms-delivery-receipts-dlr-error-codes)を参照してください。APIにはべき等性ヘッダーがないため、重複を避けるために、返されたメッセージIDを保持し、再送前にそのステータスを確認してください。その他の詳細は[エラーコード](https://www.broadnet.me/developers/error-codes)のページに記載されています。

## 本番環境への移行にはどうすればよいですか？

- トークンはサーバーサイドで管理してください。トークンが抽出される可能性があるブラウザやモバイルアプリから、直接SMS APIを呼び出すことは避け、独自のバックエンドから呼び出すようにしてください。
- 長いメッセージの送信について：GSM-7では、1 SMSあたり160文字、Unicode (UCS-2)では70文字が上限となり、これを超えるテキストは課金対象のセグメントに分割されます。[SMSの文字数制限](https://www.broadnet.me/answers/sms-character-limit-explained)を参照してください。
- SMS一斉送信をキューに入れ、アカウントのスループットを遵守してください。詳細は[レート制限](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 vs REST](https://www.broadnet.me/compare/sms-api-vs-smpp)をご覧ください。BroadNetのプラットフォームは、1ノードあたり毎秒30,000件のSMSを処理できます。

## よくある質問

### コードからSMSを送信する最も簡単な方法は何ですか？

アクセストークンとJSONボディを使用して、SMS APIに1回のHTTPS POSTリクエストを送信します。BroadNetの場合、それはsenderId、destinationNumber、メッセージ、およびmessageTypeを含むhttps://api.broadnet.me/sms/sendSmsのPOSTです。

### Python、PHP、またはJava用のBroadNet SDKはありますか？

いいえ。TypeScriptおよびNode.js向けに、公式SDKである@broadnet/cpaas-sdkが1つ提供されています。他の言語では、こちらに示すようにREST APIを直接呼び出すか、OpenAPI仕様からクライアントを生成してください。

### 電話番号の形式はどうすればよいですか？

国番号を含む国際形式で、プラス記号やスペースは含めないでください。例：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仕様書に照らして検証された、当社のデベロッパーページ上のものです。2026年9月28日レビュー済み。当社の[編集基準](https://www.broadnet.me/about/editorial-standards)をご覧ください。
