サービスについて
BulkSMSAPIとは?
開発者向けの一括SMS API:1回のリクエストで1件または最大10,000件の番号に227ヶ国へ送信可能。REST経由で、署名付きWebhooksで各メッセージを追跡、プリペイド残高からメッセージ単位で支払い。コード不要でWebコンソールからリスト貼り付けまたはCSVでキャンペーン送信可能。
一括SMS APIのユーザーは?
自社システムからテキストを送信するプロダクトチームやエンジニアリングチーム:ログイン・サインアップコード、注文・配送更新、予約リマインダー、支払い通知、サービス案内、マーケティングキャンペーンなど。HTTPSリクエストを送信できる人なら誰でも利用可能。
送信可能な国は?
227の国と地域。価格ページと国別ページに価格が掲載されています。1リクエストで複数の国を混在させることが可能で、各番号は所属国ごとに課金されます。
月額料金や契約はありますか?
いいえ。プリペイド残高からメッセージセグメント単位で支払い、月額料金、初期費用、最低利用量はありません。残高に有効期限はありません。
無料トライアルはありますか?
アカウントは残高0で開始し、初回チャージですべての機能が利用可能になります。初回チャージで最大40%のボーナスが付与されるため、最初のメッセージは低コストで送信できます。価格は公開されており、見積もりエンドポイントとコンソールで送信前の正確なコストを確認できます。
アカウントとAPIキー
アカウントの作成方法は?
Get API keyを開きます。ブラウザがacct_で始まるアカウントキーを生成するので、コピーするかテキストファイルとして保存し、保存を確認するとアカウントが準備完了です。アカウントキーが唯一のログイン情報で、メールアドレスやパスワードはありません。
アカウントキーを紛失した場合どうなりますか?
当社はキー付きハッシュのみを保存しているため、サポートチームを含め誰も再度表示することはできません。パスワードマネージャーに保管してください。サインイン中はコンソールが動作し続け、そこからサポートに連絡できます。
APIキーの取得方法は?
コンソールのAPIキーページで、最初のチャージが反映された後、キーに名前を付け、作成し、一度コピーします。キーはbsa_live_で始まります。1つのアカウントで10個のアクティブなキーを保持でき、それぞれに名前とレートリミットカウンターがあります。
本番環境とステージング環境で異なるキーを使用できますか?
はい。アプリまたは環境ごとに1つのキーを作成し、名前を付けます。各キーは最後に使用された日時を表示し、1つを無効にしても他のキーは引き続き機能します。
いくつのアカウントを作成できますか?
ネットワークアドレスごとに最大3つのアカウントを作成できます。ほとんどのチームは、複数のAPIキーを持つ1つのアカウントで十分です。
メッセージの送信
1つのリクエストでいくつの番号を扱えますか?
POST /v1/batchesは1リクエストあたり最大10,000件の番号を扱えます。全員に同じテキストを送るか、番号ごとに個別のテキストを送ることができます。コンソールでは1キャンペーンあたり50,000件の番号を扱え、それ以上のリストは複数のリクエストに分割されます。
メッセージはどのくらいの速さで送信されますか?
キューは2秒ごとに実行され、アカウントごとに1分間に最大1,200件のメッセージをネットワークに渡します。順番は受け取った順です。単一のメッセージは通常、リクエストから数秒以内に送信されます。
電話番号はどの形式にする必要がありますか?
国際形式E.164:プラス記号、国コード、国内番号(例:+14155550123)。スペース、ダッシュ、括弧、00プレフィックスは自動的に削除されます。重複番号や読み取れない番号は除外され、課金されません。
メッセージはどのくらいの長さにできますか?
最大10セグメント:GSM-7で1,530文字、Unicodeで670文字。1セグメントはGSM-7で160文字、Unicodeで70文字です。長いテキストは153文字または67文字の部分に分割され、電話で再結合されます。
なぜメッセージが予想より多くのセグメントを使用したのですか?
GSM-7アルファベット外の1文字(例:カギ括弧、絵文字、áやçなどの文字)があると、テキスト全体がUnicodeに切り替わり、1セグメントあたり70文字になります。コンソールのコンポーザーはそれらの文字を表示し、POST /v1/estimatesは送信前にエンコーディングを返します。
メッセージをスケジュールできますか?
はい。APIリクエストにsend_atを追加するか、コンソールで2分後から45日後までの時間を選択できます。スケジュールされたバッチは開始前までキャンセル可能で、全額が残高に戻ります。
各受信者に異なるテキストを送信できますか?
はい。APIを使用して、各受信者ごとに{to, text}を含むバッチを送信できます。コンソールでは、追加の列を含むリストを貼り付けるかアップロードし、テキスト内でマージフィールド{{1}}から{{9}}を使用します。
メッセージに受信拒否の文が追加されますか?
設定で受信拒否の文言(例:リンクやメールアドレス)を一度設定すると、コンソールはチェックボックスをオンにしたときにキャンペーンテキストにそれを追加します。APIでは全文を制御するため、マーケティングメッセージに自分でその文を追加してください。送信除外リストにある番号はコンソールとAPIでスキップされ、課金されません。
最初にテストメッセージを送信できますか?
はい。コンソールではキャンペーンの前に1つの番号にテスト送信ができ、APIではPOST /v1/messagesを使用して自分の電話に単一のメッセージを送信できます。
価格と支払い
1通のSMSの料金はいくらですか?
番号の国によって異なります。各国の1セグメントあたりの料金は米ドルで表示され、$0.00247(ブラジル)からです。価格ページとGET /v1/pricingで各国の料金を確認できます。
バッチの料金はどのように計算されますか?
各受信者について、その国の1セグメントあたりの料金にテキストのセグメント数を掛けます。合計はリクエストが受け取られたときに残高から引き落とされ、レスポンスにcostとして表示されます。
最小チャージ額はいくらですか?
$40。チャージ額は$40から$5,000の間で任意の金額を選択できます。初回チャージでは最大40%のボーナスが付与され、支払い前に各金額に表示されます。
支払い方法
コンソールの「Billing」を開くと、ページ上にホスト型チェックアウトが表示されます。金額を選択し暗号通貨で支払うと、支払いページに正確な金額とアドレスが表示されます。支払いページには各手順が記載されています。
失敗したメッセージは返金されますか?
はい。メッセージが失敗すると、その料金は自動的に残高に返金され、台帳に返金明細として記録されます。スケジュール済みバッチをキャンセルした場合も全額返金されます。
残高を引き出せますか?
残高はメッセージ送信に使用され、アカウントに無期限で保持されます。失敗またはキャンセルされたメッセージの返金も残高に戻ります。
料金は変わりますか?
ネットワークコストの変動に伴い料金が変更される場合があります。最新の料金表には日付が記載され、APIは各料金と共に日付を返します。既に受理されたメッセージは請求時の料金が適用されます。
配信とレポート
メッセージが配信されたかどうかを確認する方法
各メッセージは、queued(キュー待ち)からsent(送信済み)を経て、delivered(配信済み)またはfailed(失敗)に遷移します。コンソールでwebhook URLを追加すると、すべての最終ステータスの署名付きイベントを受け取ることができます。または、GET /v1/messages/{id} と GET /v1/batches/{id} を参照してください。
Webhookの署名方法
Standard Webhooks形式で、webhook-id、webhook-timestamp、webhook-signatureヘッダーを使用します。署名はid、タイムスタンプ、生ボディをwhsec_シークレットでHMAC-SHA256したものです。ドキュメントにはNode.js、Python、PHP、Go用の検証コードがあります。
Webhookエンドポイントがダウンしている場合
各イベントは約24時間に10回再試行され、各試行はHTTPステータスと共にコンソールに表示されます。メッセージエンドポイントを随時ポーリングすることも可能です。
メッセージが失敗する理由
端末の電源が長時間切れている、番号が使用不能になっている、またはネットワークがメッセージを拒否した可能性があります。失敗ステータスにはエラーコードが付随し、料金は返金されます。
メッセージ記録の保持期間
バッチ、メッセージ、残高台帳はアカウントとAPIに保持されます。リクエストログには直近500件のAPI呼び出し、webhookログには直近500件の配信が記録されます。
開発者向け
SDKはありますか?
APIはHTTPS経由のプレーンJSONなので、各言語の標準ライブラリで十分です。ドキュメントにはcurl、Node.js、Python、PHP、Goの完全なサンプルがあり、/openapi.jsonのOpenAPI仕様からほとんどの言語で型付きクライアントを生成できます。
レート制限について
APIキーごとに1分あたり600リクエストです。各応答にはX-RateLimit-Limit、X-RateLimit-Remaining、X-RateLimit-Resetヘッダーが含まれ、429応答にはRetry-Afterが付きます。
タイムアウト後の安全な再試行方法
POSTリクエストにIdempotency-Keyヘッダーを付与し、同じキーで再試行してください。24時間以内であれば、同じキーとボディで再送信せず最初の応答が返されます。
APIキーなしで料金を確認できますか?
はい。GET /v1/pricing と GET /v1/pricing/{country} は公開されているため、チェックアウトページやダッシュボードで最新料金を表示できます。
コードで送信した内容を確認する方法
コンソールには、最後の500回のAPI呼び出しのメソッド、パス、ステータス、時間が記録されたリクエストログがあり、バッチ、メッセージ、ウェブフックログの隣に表示されます。
コンソール
コードを書かずに送信できますか?
はい。コンソールで、番号を貼り付けるか、最大50,000行のCSVファイルをアップロードし、マージフィールドを含むテキストを記述し、各受信者ごとのプレビューと国ごとのコストを確認して、今すぐまたは指定した時間に送信できます。
コンソールには何が表示されますか?
残高、ライブカウント付きの最近のバッチ、各バッチのメッセージとステータス、チャージと元帳、APIキー、ウェブフック設定と配信、リクエストログ、価格表、サポートチケットと設定。
サポートに連絡するにはどうすればいいですか?
コンソールのサポートページから。支払いに関する質問は初日から可能です。その他のトピックは、最初のチャージが反映された後に利用可能になります。
まだ質問がありますか?
ログイン済みのアカウントは、コンソールからサポートチケットを開くことができます。支払いに関する質問は初日から可能です。