GET
/balance
残高の確認
アカウントの現在の残高を米ドルで返します。認証コードの受信とSMS送信は同じ残高を使います。
リクエストパラメーター
リクエストパラメーターはありません。
リクエスト例
request
$ curl https://today-sms.com/api/v1/balance \
-H "Authorization: Bearer YOUR_API_KEY"
レスポンス例
response
{
"balance": "42.5000",
"currency": "USD"
}
発生しうるエラー
| unauthorized | APIキーがないか、正しくありません |
| not_allowed | APIは初回チャージが反映されたあとに使えるようになります |
| rate_limited | 1分間のリクエストが多すぎます |
GET
/apps
アプリ一覧
現在番号があるアプリの一覧です。アプリコード、名前、最安料金、番号がある国の数を返します。
リクエストパラメーター
リクエストパラメーターはありません。
リクエスト例
request
$ curl https://today-sms.com/api/v1/apps \
-H "Authorization: Bearer YOUR_API_KEY"
レスポンス例
response
[
{ "app": "telegram", "name": "Telegram", "from": "0.4515", "countries": 61 }
]
発生しうるエラー
| unauthorized | APIキーがないか、正しくありません |
| not_allowed | APIは初回チャージが反映されたあとに使えるようになります |
GET
/prices?app=telegram
アプリ別の国と料金
1つのアプリの国一覧を安い順に返します。国コード、ISOコード、料金、現在ある番号の数が含まれます。
リクエストパラメーター
| 名前 | 型 | 必須 | 説明 |
|---|
| app | string | 必須 | アプリコード(GET /appsのappの値) |
リクエスト例
request
$ curl https://today-sms.com/api/v1/prices?app=telegram \
-H "Authorization: Bearer YOUR_API_KEY"
レスポンス例
response
[
{ "country": "indonesia", "iso": "id", "price": "0.4515", "stock": 702866 }
]
発生しうるエラー
| bad_request | 必須の値がないか、形式が正しくありません |
| unauthorized | APIキーがないか、正しくありません |
POST
/numbers
番号の購入
アプリと国を指定して番号を購入します。料金は残高から差し引かれ、番号は決まった時間のあいだSMSを待ちます。番号の確認が遅れると、202とともにcheckingの状態で返されます。
リクエストパラメーター
| 名前 | 型 | 必須 | 説明 |
|---|
| app | string | 必須 | アプリコード |
| country | string | 必須 | 国コード(GET /pricesのcountryの値) |
リクエスト例
request
$ curl -X POST https://today-sms.com/api/v1/numbers \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"app":"telegram","country":"indonesia"}'
レスポンス例
response
{
"id": "N-7K2M-QX4P-9D3A",
"app": "telegram",
"country": "indonesia",
"phone": "+6281234567890",
"price": "0.4515",
"refunded": "0.0000",
"status": "waiting",
"expires_at": "2026-10-18T09:20:00.000Z",
"sms": []
}
発生しうるエラー
| bad_request | 必須の値がないか、形式が正しくありません |
| not_enough_balance | 残高が不足しています。先にチャージしてください |
| too_many_open | 開いている番号が多すぎます。いくつか終了するかキャンセルしてください |
| no_numbers | 現在このアプリと国の番号はありません |
GET
/numbers/{id}
番号の状態とSMS
番号の状態と、これまでに受信したSMSをすべて返します。認証コードはcodeに別途入ります。
リクエストパラメーター
| 名前 | 型 | 必須 | 説明 |
|---|
| id | string | 必須 | 番号の購入時に受け取ったid(N-で始まる) |
リクエスト例
request
$ curl https://today-sms.com/api/v1/numbers/N-7K2M-QX4P-9D3A \
-H "Authorization: Bearer YOUR_API_KEY"
レスポンス例
response
{
"id": "N-7K2M-QX4P-9D3A",
"status": "received",
"sms": [
{ "code": "482913", "text": "Your code is 482913", "at": "2026-10-18T09:02:11.000Z" }
]
}
発生しうるエラー
| not_found | ご自身のアカウントに該当する番号やSMSがありません |
POST
/numbers/{id}/cancel
番号のキャンセル
SMSが届いていない番号を、購入から120秒後以降にキャンセルします。全額が残高に戻ります。
リクエストパラメーター
| 名前 | 型 | 必須 | 説明 |
|---|
| id | string | 必須 | 番号のid(N-で始まる) |
リクエスト例
request
$ curl -X POST https://today-sms.com/api/v1/numbers/N-7K2M-QX4P-9D3A/cancel \
-H "Authorization: Bearer YOUR_API_KEY"
レスポンス例
response
{
"id": "N-7K2M-QX4P-9D3A",
"status": "canceled",
"refunded": "0.4515"
}
発生しうるエラー
| too_early | 購入から120秒後からキャンセルできます |
| has_sms | SMSが届いた番号はキャンセルできません |
| try_again | キャンセルがまだ確認されていません。1分後にもう一度お試しください |
| not_found | ご自身のアカウントに該当する番号やSMSがありません |
POST
/numbers/{id}/finish
番号の終了
認証コードを受け取ったあとに番号を閉じます。閉じた番号はそれ以上SMSを受信しません。
リクエストパラメーター
| 名前 | 型 | 必須 | 説明 |
|---|
| id | string | 必須 | 番号のid(N-で始まる) |
リクエスト例
request
$ curl -X POST https://today-sms.com/api/v1/numbers/N-7K2M-QX4P-9D3A/finish \
-H "Authorization: Bearer YOUR_API_KEY"
レスポンス例
response
{
"id": "N-7K2M-QX4P-9D3A",
"status": "finished"
}
発生しうるエラー
| not_found | ご自身のアカウントに該当する番号やSMSがありません |
GET
/messages/prices
国別SMS料金
SMS送信の国別の1通あたりの料金を返します。ISOコード、国番号、1通あたりの料金(USD)が含まれます。
リクエストパラメーター
リクエストパラメーターはありません。
リクエスト例
request
$ curl https://today-sms.com/api/v1/messages/prices \
-H "Authorization: Bearer YOUR_API_KEY"
レスポンス例
response
[
{ "iso": "us", "dial": "1", "price": "0.0042" },
{ "iso": "gb", "dial": "44", "price": "0.0066" }
]
発生しうるエラー
| unauthorized | APIキーがないか、正しくありません |
| not_allowed | APIは初回チャージが反映されたあとに使えるようになります |
POST
/messages
SMS送信
宛先の一覧と本文でSMSを送信します。1回のリクエストで最大1,000人、同じ番号には1回だけ送ります。atを入れるとその時刻(UTC)に送る予約送信になります。合計費用は送信時に残高から確保し、失敗した通数分は残高にお返しします。
リクエストパラメーター
| 名前 | 型 | 必須 | 説明 |
|---|
| to | string[] | 必須 | 国際形式の番号の一覧(+と国番号を含む)、最大1,000件 |
| text | string | 必須 | 本文。GSM-7 160文字、Unicode 70文字で1通 |
| at | string | 任意 | 予約時刻、ISO 8601 UTC(例: 2026-10-18T10:00:00Z) |
| ref | string | 任意 | ご自身の注文番号などの参照値、64文字まで |
リクエスト例
request
$ curl -X POST https://today-sms.com/api/v1/messages \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"to":["+14155550100","+447700900123"],"text":"Your code is 482913"}'
レスポンス例
response
{
"id": "m_7Q2K9X",
"status": "queued",
"recipients": 2,
"parts": 1,
"encoding": "GSM-7",
"cost": "0.0136"
}
発生しうるエラー
| bad_request | 必須の値がないか、形式が正しくありません |
| too_many_recipients | 1回のリクエストの宛先は1,000人までです |
| not_enough_balance | 残高が不足しています。先にチャージしてください |
| not_available | このサービスはまもなく利用できるようになります。今回のリクエストは受け付けておらず、残高はそのままです |
GET
/messages/{id}
送信状態と配信レポート
送ったSMSの全体の状態と、宛先別の配信レポートを返します。失敗した通数分の金額はrefundedに加算されます。
リクエストパラメーター
| 名前 | 型 | 必須 | 説明 |
|---|
| id | string | 必須 | SMS送信時に受け取ったid |
リクエスト例
request
$ curl https://today-sms.com/api/v1/messages/m_7Q2K9X \
-H "Authorization: Bearer YOUR_API_KEY"
レスポンス例
response
{
"id": "m_7Q2K9X",
"status": "done",
"cost": "0.0136",
"refunded": "0.0083",
"reports": [
{ "to": "+14155550100", "status": "delivered", "at": "2026-10-18T10:00:04Z" },
{ "to": "+447700900123", "status": "failed", "at": "2026-10-18T10:00:09Z" }
]
}
発生しうるエラー
| not_found | ご自身のアカウントに該当する番号やSMSがありません |
POST
/messages/{id}/cancel
予約送信のキャンセル
まだ送っていない予約送信をキャンセルします。確保していた金額はすべて残高に戻ります。
リクエストパラメーター
リクエスト例
request
$ curl -X POST https://today-sms.com/api/v1/messages/m_7Q2K9X/cancel \
-H "Authorization: Bearer YOUR_API_KEY"
レスポンス例
response
{
"id": "m_7Q2K9X",
"status": "canceled",
"refunded": "0.0136"
}
発生しうるエラー
| too_late | すでに送信を開始したSMSはキャンセルできません |
| not_found | ご自身のアカウントに該当する番号やSMSがありません |