単一メッセージ
POST /v1/messages は1つの番号に1つのテキストを送信し、即座にメッセージIDを返します。ログインコード、パスワードリセット、支払いアラートは、コードが呼び出した瞬間に送信されます。
メッセージを送信Bulk SMS API
BulkSMSAPIは開発者向けの一括SMS APIです:1回のリクエストで1件のテキストまたは最大10,000件の番号リストを227ヶ国にREST経由で送信でき、各メッセージには署名付きWebhookで配信状況を追跡可能。前払い残高からメッセージ単位で支払います。
アメリカ合衆国へのSMSは1セグメントあたり$0.00507
構成要素
POST /v1/messages は1つの番号に1つのテキストを送信し、即座にメッセージIDを返します。ログインコード、パスワードリセット、支払いアラートは、コードが呼び出した瞬間に送信されます。
メッセージを送信POST /v1/batches は1リクエストで最大10,000の番号を受け取り、全員に同じテキストを送信するか、番号ごとに個別のテキストを送信します。重複や無効な番号は除外され、回答にリストされます。
バッチを送信配信または失敗したメッセージは、署名付きJSONイベントでエンドポイントを呼び出します。各イベントは約24時間にわたって10回試行されるため、デプロイによってステータスが失われることはありません。
ウェブフックを設定GET /v1/pricing は、キーなしで各国のセグメントごとの料金を返します。自社の製品でコストを表示したり、大規模な送信前にルートを確認したりできます。
APIで料金を確認send_at をリクエストに追加すると、バッチはその分まで待機します(2分から45日先まで)。開始前にキャンセルすると、全額が残高に戻ります。
バッチをスケジュールリストを貼り付けるかアップロードし、テキストを書き、受信者ごとにプレビューしてコードなしで送信します。APIからのすべてのバッチは、ライブカウントとともに同じコンソールに表示されます。
コンソールを見るシステム内の1つのイベント、1人への1つのテキストが数秒以内に送信されます。
1つのテキスト、または1人ごとに1つのテキストを、1リクエストで数千のリストに送信します。
認証サービスからPOST /v1/messagesを使用してワンタイムコードを送信し、ユーザーが新しいコードを要求する前に配信イベントを読み取ります。
荷物がデポを出るときに、注文システムがAPIを呼び出し、時間帯と追跡コードを短いテキストで送信します。
毎晩のジョブが明日のリストを作成し、患者やクライアントごとにパーソナライズされたテキストを含む1つのバッチを前日の夜に送信します。
カード支払い、送金、新しいデバイスのサインインが同じ秒にテキストをトリガーし、セグメントごとに課金され、そのステータスが記録されます。
コンソールから50,000件、またはCRMから10,000件のバッチを送信し、すべてのテキストに配信停止リンクを追加します。
サービス、フライト、配達ルートが変更されたときに、影響を受けるすべての顧客にすぐに通知し、修正されたときにフォローアップします。
curl https://bulksmsapi.cc/v1/batches \
-H "Authorization: Bearer $BULKSMSAPI_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: spring-sale-0412" \
-d '{
"name": "Spring sale",
"text": "Spring sale at Northwind: 20% off until Sunday. Opt out: northwind.example/sms",
"to": [
"+14155550123",
"+447400123456",
"+4915123456789"
]
}'const res = await fetch("https://bulksmsapi.cc/v1/batches", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BULKSMSAPI_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "spring-sale-0412",
},
body: JSON.stringify({
name: "Spring sale",
text: "Spring sale at Northwind: 20% off until Sunday. Opt out: northwind.example/sms",
to: ["+14155550123", "+447400123456", "+4915123456789"],
}),
});
const batch = await res.json();
console.log(res.status, batch.id, batch.recipients, batch.cost);import json, os, urllib.request
req = urllib.request.Request(
"https://bulksmsapi.cc/v1/batches",
data=json.dumps({
"name": "Spring sale",
"text": "Spring sale at Northwind: 20% off until Sunday. Opt out: northwind.example/sms",
"to": ["+14155550123", "+447400123456", "+4915123456789"],
}).encode(),
headers={
"Authorization": "Bearer " + os.environ["BULKSMSAPI_KEY"],
"Content-Type": "application/json",
"Idempotency-Key": "spring-sale-0412",
"User-Agent": "northwind-app/1.0",
},
method="POST",
)
with urllib.request.urlopen(req) as res:
batch = json.load(res)
print(res.status, batch["id"], batch["recipients"], batch["cost"])<?php
$ch = curl_init("https://bulksmsapi.cc/v1/batches");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("BULKSMSAPI_KEY"),
"Content-Type: application/json",
"Idempotency-Key: spring-sale-0412",
],
CURLOPT_POSTFIELDS => json_encode([
"name" => "Spring sale",
"text" => "Spring sale at Northwind: 20% off until Sunday. Opt out: northwind.example/sms",
"to" => ["+14155550123", "+447400123456", "+4915123456789"],
]),
]);
$batch = json_decode(curl_exec($ch), true);
echo $batch["id"], " ", $batch["recipients"], " ", $batch["cost"], "\n";package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main() {
body, _ := json.Marshal(map[string]any{
"name": "Spring sale",
"text": "Spring sale at Northwind: 20% off until Sunday. Opt out: northwind.example/sms",
"to": []string{"+14155550123", "+447400123456", "+4915123456789"},
})
req, _ := http.NewRequest("POST", "https://bulksmsapi.cc/v1/batches", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer "+os.Getenv("BULKSMSAPI_KEY"))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Idempotency-Key", "spring-sale-0412")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
var batch map[string]any
json.NewDecoder(res.Body).Decode(&batch)
fmt.Println(res.StatusCode, batch["id"], batch["recipients"], batch["cost"])
}料金
GET /v1/pricingからリアルタイムで読み取られるため、あなたの製品でも同じ数値を表示できます。227か国中227か国
| 国 | 国番号 | SMSごと |
|---|---|---|
| $0.01467 | ||
| $0.01417 | ||
| $0.05557 | ||
| $0.03117 | ||
| $0.00507 | ||
| $0.00447 | ||
| $0.02267 | ||
| $0.01417 | ||
| $0.01387 | ||
| $0.01357 | ||
| $0.01417 | ||
| $0.01297 | ||
| $0.00987 | ||
| $0.01327 | ||
| $0.00987 | ||
| $0.04537 | ||
| $0.00787 | ||
| $0.03967 | ||
| $0.00877 | ||
| $0.02237 | ||
| $0.02117 | ||
| $0.01557 | ||
| $0.04257 | ||
| $0.02357 | ||
| $0.01327 | ||
| $0.01467 | ||
| $0.05307 | ||
| $0.00957 | ||
| $0.02377 | ||
| $0.03687 | ||
| $0.00727 | ||
| $0.00907 | ||
| $0.06157 | ||
| $0.01667 | ||
| $0.01277 | ||
| $0.00507 | ||
| $0.00707 | ||
| $0.01277 | ||
| $0.01817 | ||
| $0.01357 | ||
| $0.01787 | ||
| $0.01417 | ||
| $0.00957 | ||
| $0.04537 | ||
| $0.00907 | ||
| $0.00527 | ||
| $0.01187 | ||
| $0.01127 | ||
| $0.00907 | ||
| $0.02117 | ||
| $0.01357 | ||
| $0.01557 | ||
| $0.00507 | ||
| $0.01697 | ||
| $0.00817 | ||
| $0.00987 | ||
| $0.02547 | ||
| $0.05107 | ||
| $0.00847 | ||
| $0.04257 | ||
| $0.00617 | ||
| $0.01847 | ||
| $0.00907 | ||
| $0.00587 | ||
| $0.02207 | ||
| $0.02037 | ||
| $0.01757 | ||
| $0.02147 | ||
| $0.01357 | ||
| $0.00727 | ||
| $0.00847 | ||
| $0.03407 | ||
| $0.00417 | ||
| $0.01277 | ||
| $0.01387 | ||
| $0.01897 | ||
| $0.00907 | ||
| $0.07097 | ||
| $0.02777 | ||
| $0.01417 | ||
| $0.00987 | ||
| $0.00787 | ||
| $0.02117 | ||
| $0.00727 | ||
| $0.01417 | ||
| $0.01277 | ||
| $0.02547 | ||
| $0.04257 | ||
| $0.01067 | ||
| $0.01667 | ||
| $0.00847 | ||
| $0.01037 | ||
| $0.01787 | ||
| $0.00707 | ||
| $0.00907 | ||
| $0.04257 | ||
| $0.00907 | ||
| $0.02237 | ||
| $0.01037 | ||
| $0.02777 | ||
| $0.02897 | ||
| $0.00957 | ||
| $0.02207 | ||
| $0.02207 | ||
| $0.01277 | ||
| $0.01037 | ||
| $0.02207 | ||
| $0.00337 | ||
| $0.04827 | ||
| $0.00877 | ||
| $0.01037 | ||
| $0.01187 | ||
| $0.05077 | ||
| $0.00367 | ||
| $0.13637 | ||
| $0.00987 | ||
| $0.01447 | ||
| $0.00617 | ||
| $0.01157 | ||
| $0.01607 | ||
| $0.00787 | ||
| $0.00727 | ||
| $0.00307 | ||
| $0.00707 | ||
| $0.01977 | ||
| $0.02947 | ||
| $0.00927 | ||
| $0.01357 | ||
| $0.01277 | ||
| $0.01357 | ||
| $0.01387 | ||
| $0.02697 | ||
| $0.00957 | ||
| $0.00907 | ||
| $0.01637 | ||
| $0.04197 | ||
| $0.00987 | ||
| $0.01037 | ||
| $0.01977 | ||
| $0.01017 | ||
| $0.03997 | ||
| $0.01447 | ||
| $0.01327 | ||
| $0.00417 | ||
| $0.01277 | ||
| $0.04257 | ||
| $0.01417 | ||
| $0.02407 | ||
| $0.01327 | ||
| $0.00987 | ||
| $0.01667 | ||
| $0.02807 | ||
| $0.00847 | ||
| $0.00677 | ||
| $0.01817 | ||
| $0.00247 | ||
| $0.01247 | ||
| $0.02547 | ||
| $0.01247 | ||
| $0.00707 | ||
| $0.01037 | ||
| $0.01417 | ||
| $0.01187 | ||
| $0.01187 | ||
| $0.03827 | ||
| $0.01557 | ||
| $0.01927 | ||
| $0.01867 | ||
| $0.00507 | ||
| $0.01387 | ||
| $0.00907 | ||
| $0.02067 | ||
| $0.00417 | ||
| $0.01157 | ||
| $0.01357 | ||
| $0.01067 | ||
| $0.01977 | ||
| $0.01417 | ||
| $0.04477 | ||
| $0.04797 | ||
| $0.01557 | ||
| $0.02517 | ||
| $0.00907 | ||
| $0.01417 | ||
| $0.01847 | ||
| $0.02697 | ||
| $0.01297 | ||
| $0.01387 | ||
| $0.01557 | ||
| $0.01217 | ||
| $0.02717 | ||
| $0.00927 | ||
| $0.01157 | ||
| $0.03407 | ||
| $0.03317 | ||
| $0.01467 | ||
| $0.02207 | ||
| $0.02267 | ||
| $0.00847 | ||
| $0.00987 | ||
| $0.00757 | ||
| $0.02697 | ||
| $0.00987 | ||
| $0.01127 | ||
| $0.00847 | ||
| $0.01247 | ||
| $0.00727 | ||
| $0.00817 | ||
| $0.01417 | ||
| $0.01417 | ||
| $0.09657 | ||
| $0.01187 | ||
| $0.00277 | ||
| $0.01247 | ||
| $0.01277 | ||
| $0.01277 | ||
| $0.00677 | ||
| $0.00587 | ||
| $0.01217 | ||
| $0.00727 | ||
| $0.01127 | ||
| $0.01067 | ||
| $0.01847 | ||
| $0.00707 | ||
| $0.02177 | ||
| $0.00707 | ||
| $0.05677 |
初回チャージで残高 $44
アメリカ合衆国へ約8,678件の1セグメントメッセージ
初回チャージで残高 $120
アメリカ合衆国へ約23,668件の1セグメントメッセージ
初回チャージで残高 $250
アメリカ合衆国へ約49,309件の1セグメントメッセージ
初回チャージで残高 $390
アメリカ合衆国へ約76,923件の1セグメントメッセージ
初回チャージで残高 $675
アメリカ合衆国へ約133,136件の1セグメントメッセージ
初回チャージで残高 $1,400
アメリカ合衆国へ約276,134件の1セグメントメッセージ
10,000
バッチリクエストあたりの番号数
1回の呼び出しでリストを送信し、国ごとに分割して受信者ごとに料金を設定します。
600
キーあたりの1分間のリクエスト数
各回答のレート制限ヘッダーには、ウィンドウ内の残りが表示されます。
1,200
アカウントあたりの1分間のメッセージ数
キューはメッセージを順番にルートに渡し、2秒ごとに処理します。
ステップ 1
ブラウザがアカウントキーを作成します。一度保存してください。これが唯一のログインで、メールやパスワードの管理は不要です。
ステップ 2
ホストされたチェックアウトから $40 を追加します。残高はコンソールとGET /v1/balanceで確認できます。
ステップ 3
アプリや環境ごとにキーに名前を付け、一度コピーし、他のキーに影響を与えずにいつでも取り消すことができます。
ステップ 4
/v1/messages または /v1/batches を呼び出し、webhook URLを追加します。配信済みと失敗したイベントは署名付きで届きます。
数秒でアカウントを作成し、$40 からチャージして、HTTPSを話す任意の言語からAPIを呼び出します。メッセージあたりの料金は $0.00247 から始まります。