APIドキュメント
数字、メッセージ、収益をアプリから直接取得できます。
まずは1つのリクエストから
ダッシュボードにAPIキーを作成し、数字を得て、20秒ごとにメッセージを確認する。コード付きのSMSが届くと支払いが行われる;再読みすると自分の残高には影響しない。
https://smscash.org/api/v1https://smscash.org/stubs/handler_api.phpcurl -X POST 'https://smscash.org/api/v1/activations' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: request-unique-001' \
-d '{"service":"go","country":86}'互換性のある代替インターフェイス アドレス: /handler_api.php. 既存の REST 統合は引き続き機能します。
リクエスト作成ツール
Idempotency-Key: UUID · POST · 8–128
自動選択:直近1時間、次に24時間のコード数が多い事業者を優先。番号がなければ次の事業者へ。
curl --max-time 15 --fail-with-body -X POST 'https://smscash.org/api/v1/activations' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: request-unique-001' \
--data '{"service":"go","country":86}'package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
payload := []byte("{\"service\":\"go\",\"country\":86}")
req, err := http.NewRequest("POST", "https://smscash.org/api/v1/activations", bytes.NewReader(payload))
if err != nil { panic(err) }
req.Header.Set("Authorization", "Bearer " + os.Getenv("SMSCASH_API_KEY"))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Idempotency-Key", "request-unique-001")
client := &http.Client{Timeout: 15 * time.Second, CheckRedirect: func(_ *http.Request, _ []*http.Request) error { return http.ErrUseLastResponse }}
res, err := client.Do(req)
if err != nil { panic(err) } // Keep the same operation key after a network error.
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil { panic(err) }
if res.StatusCode >= 300 {
fmt.Fprintf(os.Stderr, "HTTP %d, request_id=%s\n%s\n", res.StatusCode, res.Header.Get("X-Request-ID"), body)
os.Exit(1)
}
fmt.Println(string(body))
}// Node.js 18+: set SMSCASH_API_KEY in your environment.
const response = await fetch("https://smscash.org/api/v1/activations", {
method: "POST",
headers: {
Authorization: 'Bearer ' + process.env.SMSCASH_API_KEY,
'Content-Type': 'application/json',
'Idempotency-Key': "request-unique-001",
},
body: JSON.stringify({
"service": "go",
"country": 86
}),
signal: AbortSignal.timeout(15000),
redirect: 'error',
});
const result = await response.json();
if (!response.ok) {
const error = result.error || {};
console.error(response.status, error.code, error.hint, error.request_id);
throw new Error(error.message || 'API error');
}
console.log(result);
// SMS codes are strings: keep leading zeros. Never retry writes automatically.import json
import os
import urllib.error
import urllib.request
class NoRedirect(urllib.request.HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
return None
headers = {
'Authorization': 'Bearer ' + os.environ['SMSCASH_API_KEY'],
'Content-Type': 'application/json',
'Idempotency-Key': "request-unique-001",
}
request = urllib.request.Request(
"https://smscash.org/api/v1/activations",
headers=headers,
data="{\"service\":\"go\",\"country\":86}".encode('utf-8'),
method="POST",
)
try:
with urllib.request.build_opener(NoRedirect).open(request, timeout=15) as response:
result = json.load(response)
print(result)
except urllib.error.HTTPError as error:
details = json.load(error).get('error', {})
print(error.code, details.get('code'), details.get('hint'), details.get('request_id'))
raise
# No automatic retries; SMS codes remain strings.キーは保存されません。この確認では番号は発行されません。
新しい統合の場合は REST
サービスと国
サービスと国を選んでください。SMS 1件あたりの報酬は国によって決まります。
GET /api/v1/catalog?service=go&country=86&page=1&page_size=100
Authorization: Bearer YOUR_API_KEY{
"rows": [
{
"offer_id": 42,
"service": "go",
"service_name": "Google",
"country_id": 86,
"country_name": "Italy",
"provider_id": 1,
"operator": 1,
"provider_name": "Operator 1",
"reward": "0.00300000",
"currency": "USD",
"accounting_precision": 8,
"earnings_hold_days": 45
}
],
"page": 1,
"page_size": 100,
"total": 1,
"pages": 1,
"has_more": false,
"accounting_precision": 8
}service · country · operator · q · page · page_size (1–100)
番号を取得する
POST /api/v1/activations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Idempotency-Key: request-unique-001
{
"service": "go",
"country": 86
}自動選択:直近1時間、次に24時間のコード数が多い事業者を優先。番号がなければ次の事業者へ。
201: new session · 200: replay of the same operation
service + country OR offer_id · duration_minutes: 20
ref: software owner code (optional)
operator: public ID (e.g. 1 for Operator 1), optional · any/0: automatic
country: integer · service: string · SMS code: string電話番号の有効期間は20分です。SMSを20秒ごとに確認します。すぐにキャンセルできます。
複数の番号を確認
GET /api/v1/activations/batch?ids=42,43
Authorization: Bearer YOUR_API_KEY{
"rows": [
{
"id": 42,
"found": true,
"phone": "12025550123",
"status": "received",
"service": "go",
"country_id": 86,
"provider_id": 1,
"operator": 1,
"expires_at": "2026-10-10T12:15:00Z",
"sms_count": 1,
"code": "001234",
"last_sms": {
"id": 101,
"code": "001234",
"sender": "Service",
"text": "Code: 001234",
"received_at": "2026-10-10T12:01:00Z"
}
},
{
"id": 43,
"found": false,
"error": {
"code": "NO_ACTIVATION",
"message": "Session not found."
}
}
],
"as_of": "2026-10-10T12:01:00Z",
"poll_interval_seconds": 20
}ids: 1–100 positive session IDs, separated by commas
Input order preserved · duplicates removed
Foreign, unavailable or out-of-scope IDs: found=false
Read only · no supplier requests · last_sms is the latest message残高 · 保留中
GET /api/v1/balance
Authorization: Bearer YOUR_API_KEY{
"currency": "USD",
"accounting_precision": 8,
"balance": "12.00000000",
"held_balance": "34.50000001",
"balance_minor": "1200000000",
"held_minor": "3450000001",
"as_of": "2026-10-12T20:00:00Z",
"next_release_at": "2026-11-26T20:00:00Z"
}balance — 利用可能; held_balance — 保留中. USD · 8
保留期間が終了した資金のみ出金できます。
すぐに使えるクライアント
import {SmScash, SmScashError} from './smscash.mjs';
import {randomUUID} from 'node:crypto';
const api = new SmScash(process.env.SMSCASH_API_KEY);
const catalog = await api.catalog({service: 'go', country: 86});
console.log(catalog.rows);
// Save this key before sending; keep it for retries of this operation.
const requestKey = randomUUID();
const session = await api.createNumber({service: 'go', country: 86}, requestKey);
// After 20 seconds:
const messages = await api.sms(session.id, {afterId: 0});
console.log(messages.sms);
const statuses = await api.batch([session.id]);
const held = await api.holdBalance();
console.log(held); // Exact USD stringimport os
import uuid
from smscash import SmScash, SmScashError
api = SmScash(os.environ['SMSCASH_API_KEY'])
catalog = api.catalog(service='go', country=86)
print(catalog['rows'])
# Save this key before sending; keep it for retries of this operation.
request_key = str(uuid.uuid4())
session = api.create_number({'service': 'go', 'country': 86}, request_key)
# After 20 seconds:
messages = api.sms(session['id'], after_id=0)
print(messages['sms'])
statuses = api.batch([session['id']])
held = api.hold_balance()
print(held) # Exact USD stringme() · balance() · holdBalance()/hold_balance() · catalog() · activation() · sms() · batch()
createNumber(parameters, requestKey) / create_number(parameters, request_key)
setStatus(id, "cancel") / set_status(id, "cancel")
setStatus(id, "retry", requestKey) / set_status(id, "retry", request_key)
Timeout: 15 s · no dependencies · no automatic retries
Error: code · status · hint · requestId/request_id · retryable
ALLOCATION_UNCERTAIN: contact support with request_id; never retry automatically.SMS-Activate / HeroSMS
https://smscash.org/sms-activate/stubs/handler_api.phphttps://smscash.org/hero-sms/stubs/handler_api.phpユーザー個人の API キー。
サービスと国を選んでください。SMS 1件あたりの報酬は国によって決まります。
| コード | 説明 |
|---|---|
getNumber / getNumberV2 | 番号を取得する |
getStatus / getStatusV2 | 最新のコードを取得する |
setStatus / finishActivation / cancelActivation | セッションの管理 |
getPrices / getNumbersStatus | 空き状況を確認する |
getRewards (SMScash) | SMSの報酬 |
getServicesList / getServices | サービス |
getCountries / getOperators | サービスと国 |
getActiveActivations | セッション |
getBalance | ユーザー残高 |
getHoldBalance (SMScash) | 保留中 |
cost = 0 USD · activationCost = 0 USDreward — SMSの報酬
curl --get 'https://smscash.org/hero-sms/stubs/handler_api.php' \
--data-urlencode 'api_key=YOUR_API_KEY' \
--data-urlencode 'action=getNumberV2' \
--data-urlencode 'service=go' \
--data-urlencode 'country=86' \
-H 'Idempotency-Key: request-unique-001'{
"activationId": "42",
"phoneNumber": "393331234567",
"activationCost": 0,
"currency": 840,
"countryCode": 86,
"canGetAnotherSms": true,
"activationTime": "2026-10-11T12:00:00Z",
"activationEndTime": "2026-10-11T12:15:00Z",
"reward": "0.00300000"
}GET or POST application/x-www-form-urlencoded
api_key · action · service · country · ref (optional)
setStatus: 1 → ACCESS_READY · 3 → ACCESS_RETRY_GET
6 → ACCESS_ACTIVATION · 8 → ACCESS_CANCEL
getStatus: STATUS_WAIT_CODE · STATUS_OK:001234 · STATUS_CANCEL
getStatusV2: {"verificationType":1,"sms":null,"call":null}
getServicesList: {"status":"success","services":[{"code":"go","name":"Google"}]}
getCountries: {"86":{"id":86,"eng":"Italy","visible":1,"retry":1,"rent":0}}
getPrices: {"86":{"go":{"cost":0,"count":12,"reward":"0.00300000","currency":"USD"}}}
getRewards: {"59":{"vi":{"1":"0.01000000"}}}
getRewards filters: country · service · operator (optional); any/0: all permitted providers
getActiveActivations: start=0 · limit=1–100 · activeActivations / data
Business/key errors: HTTP 200 + plain text · server errors: HTTP 500
Availability: actual supplier pool, shared cache up to 20 s; not a reservation
No automatic retries after a transport error or ALLOCATION_UNCERTAIN.
Keep the original Idempotency-Key and parameters.
Unsupported: rent · calls · forwarding · multiple services per number · prolong
Unsupported options return BAD_REQUEST; unsupported actions return BAD_ACTION.
SMScash keys and country/service codes; configure this base URL in your software.電話番号の有効期間は20分です。SMSを20秒ごとに確認します。すぐにキャンセルできます。
認証と再試行
REST: ヘッダー Authorization: Bearer YOUR_API_KEY. 互換性のあるインターフェイス: パラメータ api_key そして action。 HTTPSを使用してください。
API キーを管理するには、アカウントを入力してください。
APIリクエストの頻度と電話番号の数に制限はありません。日単位・時間単位の割当上限もありません。
電話番号の有効期間は20分です。SMSを20秒ごとに確認します。すぐにキャンセルできます。
REST では、ユニークな Idempotency-Key 番号割り当て、リピート割り当て、retry、および支払いリクエストには必須です。これはオプションですが、handler_api.php では推奨されます。ネットワーク要求を再試行するときにキーを再利用します。新しい操作には新しいキーを使用します。
APIキーのアクセス範囲
キーを特定のサービス、国、プロバイダーに限定できます。リストが空の場合、利用可能なすべての選択肢が許可されます。
{
"label": "私のソフトウェア",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} 名前と policy を完全に変更します。シークレットは作成時にのみ表示されます。
合計10%。 5% + ソフトウェア コードの場合は 5%。
番号発行の際はご入力ください ref ソフトウェアの所有者。リクエストはユーザーのキーによって承認されます。コードは「紹介」セクションと GET /api/v1/referrals → software_ref.
| リクエスト | 紹介者 | ソフトウェア |
|---|---|---|
| refなし | 10% | — |
| ref付き | 5% | 5% |
| ref ではリファラーなし | — | 5% |
プラットフォームはユーザーの収入を減らすことなくボーナスを支払います。ソフトウェアの所有者と紹介者は同一人物であってもかまいません。ユーザーは独自のコードを使用できません。
セッションを作成すると条件が固定されます。SMSとretryを読むことでそれらは変わりません。新しい繰り返しセッションのためにrefを再度渡してください。料金計算では、ユーザーの報酬としてUSD 0.003が、ソフトウェアの所有者と紹介者にそれぞれUSD 0.00015となります。合計ボーナスはUSD 0.00030です。
API コマンド
11 の XVBC スタイルのメソッドと SMScash 残高。
GETgetNumber番号を取得する+
セッションを作成し、利用可能な電話番号をユーザーに割り当てます。報酬単価と紹介報酬の受取人は割り当て時に確定し、コードを含むSMSを受信した時点で報酬が加算されます。
パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
api_key* | string | ユーザー個人の API キー。 |
service* | string | 利用可能なサービスコード。答えはAPIキーの領域に限定されます。 |
country* | integer | getCountries から ID を取得します。 |
operator | string | operators/getOperators (API) から ID を取得します。 operator=1 · any/0 |
session_duration | integer | セッションは20分間です。20を通過するか、このパラメータを省略してください。 |
with_operator | integer | 1は応答にオペレーターIDを追加します。0または省略時は3つのセグメントを返します。 |
ref | string | ソフトウェア所有者の公開コード: 彼が 5%、招待者が 5%。 ref なし - 招待者に 10%。 |
* 必須パラメータ。すべてのリクエストで、action=getNumber も渡します。
リクエスト例
curl 'https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1' \
-H 'Idempotency-Key: request-unique-001'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1", nil)
if err != nil { panic(err) }
req.Header.Set("Idempotency-Key", "request-unique-001")
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1", {
headers: {"Idempotency-Key": "request-unique-001"}
});
const result = await response.text();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1",
headers={"Idempotency-Key": "request-unique-001"},
timeout=15,
)
print(response.status_code, response.text)応答
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- 自動選択:直近1時間、次に24時間のコード数が多い事業者を優先。番号がなければ次の事業者へ。
- Idempotency-Key を渡す: 同じキーを持つ同じリクエストは前のセッションを返します。パラメータを変更すると、IDEMPOTENCY_CONFLICT が呼び出されます。
- プールのない数値の国は EMPTY_POOL になります。間違った国の形式は BAD_COUNTRY です。
- 削除されたセッションのキーは引き続き使用される:そのキーで再割り当てを行うと SESSION_CLOSED が返され、別の番号は発行されない。
- 割り当て結果は未確認です。2 つ目の番号の割り当てを防ぐため、自動再試行は無効です。
GETgetNumbersStatus空き状況を確認する+
サービスと国ごとの利用可能な電話番号数。
パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
api_key* | string | ユーザー個人の API キー。 |
country* | integer | getCountries から ID を取得します。 |
* 必須パラメータ。すべてのリクエストで、action=getNumbersStatus も渡します。
リクエスト例
curl 'https://smscash.org/stubs/handler_api.php?action=getNumbersStatus&api_key=YOUR_API_KEY&country=86'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getNumbersStatus&api_key=YOUR_API_KEY&country=86", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getNumbersStatus&api_key=YOUR_API_KEY&country=86");
const result = await response.json();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getNumbersStatus&api_key=YOUR_API_KEY&country=86",
timeout=15,
)
print(response.status_code, response.json())応答
{
"go_0": 0
}- 接尾辞 _0 は、特定の演算子のない選択肢を意味します。
- 在庫数は供給元の番号プール全体を示します。選択したチャネルの利用可否は番号割り当て時に確認します。
GETgetStatus最新のコードを取得する+
セッションステータスと最後のSMSコードを簡単にリクエストできます。コード内の先頭のゼロは保持されます。
パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
api_key* | string | ユーザー個人の API キー。 |
id* | integer | 番号の発行時に受信したセッションの ID。 |
* 必須パラメータ。すべてのリクエストで、action=getStatus も渡します。
リクエスト例
curl 'https://smscash.org/stubs/handler_api.php?action=getStatus&api_key=YOUR_API_KEY&id=42'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getStatus&api_key=YOUR_API_KEY&id=42", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getStatus&api_key=YOUR_API_KEY&id=42");
const result = await response.text();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getStatus&api_key=YOUR_API_KEY&id=42",
timeout=15,
)
print(response.status_code, response.text)応答
STATUS_WAIT_CODESTATUS_OK:001234STATUS_CANCELNO_ACTIVATION- 20秒ごとにポールを行います。メッセージを再読みするだけでは、新たな支払いは発生しません。
- retry の後は古いコードは返されません。getStatus は次の SMS を待ちます。
- SMSのない数が削除された後、getStatusおよびgetSmsはSTATUS_CANCELに戻ります。getSmsFullは閉じた状態、空の電話番号、空のSMSリストを返します。REST、/activations/{id}、/smsは404、NO_ACTIVATIONに戻ります。
GETsetStatusセッションの管理+
完了、キャンセル、または再開の待ち時間が SMS です。セッションの有効期限は変わりません。
パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
api_key* | string | ユーザー個人の API キー。 |
id* | integer | 番号の発行時に受信したセッションの ID。 |
status* | integer | 3 — セッションを延長せずに次のコードを待つ; 6 — SMSの後に完了する; 8 — 直ちにキャンセルする。 |
* 必須パラメータ。すべてのリクエストで、action=setStatus も渡します。
リクエスト例
curl 'https://smscash.org/stubs/handler_api.php?action=setStatus&api_key=YOUR_API_KEY&id=42&status=3' \
-H 'Idempotency-Key: request-unique-001'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=setStatus&api_key=YOUR_API_KEY&id=42&status=3", nil)
if err != nil { panic(err) }
req.Header.Set("Idempotency-Key", "request-unique-001")
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=setStatus&api_key=YOUR_API_KEY&id=42&status=3", {
headers: {"Idempotency-Key": "request-unique-001"}
});
const result = await response.text();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=setStatus&api_key=YOUR_API_KEY&id=42&status=3",
headers={"Idempotency-Key": "request-unique-001"},
timeout=15,
)
print(response.status_code, response.text)応答
ACCESS_RETRY_GETACCESS_ACTIVATIONACCESS_CANCEL- 次のコードが20分以内に戻るのを待って再試行します。問題や有効期限は変わりません。
- status=3 の場合は、Idempotency-Key を使用します。リクエストを繰り返しても、すでに受信した新しいコードはリセットされません。 SMS の履歴は引き続き利用可能です。
- キャンセルしても、獲得済みの報酬は差し引かれません。
- SMSコードを持つ番号のみが履歴に保存されます。コードのない、キャンセルされた、有効期限が切れた番号は削除されます。
GETgetRepeatNumber同じ番号を再度発行する+
履歴から特定の番号を使用して新しいセッションを開きます。同じ国で利用可能な別のサービスを選択できます。
パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
api_key* | string | ユーザー個人の API キー。 |
number* | string | あなたの古い番号。数字とオプションの先頭の + のみが許可されます。 |
service* | string | 利用可能なサービスコード。答えはAPIキーの領域に限定されます。 |
session_duration | integer | セッションは20分間です。20を通過するか、このパラメータを省略してください。 |
with_operator | integer | 1は応答にオペレーターIDを追加します。0または省略時は3つのセグメントを返します。 |
ref | string | ソフトウェア所有者の公開コード: 彼が 5%、招待者が 5%。 ref なし - 招待者に 10%。 |
operator | string | operators/getOperators (API) から ID を取得します。 operator=1 · any/0 |
* 必須パラメータ。すべてのリクエストで、action=getRepeatNumber も渡します。
リクエスト例
curl 'https://smscash.org/stubs/handler_api.php?action=getRepeatNumber&api_key=YOUR_API_KEY&number=380670000000&service=go' \
-H 'Idempotency-Key: request-unique-001'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getRepeatNumber&api_key=YOUR_API_KEY&number=380670000000&service=go", nil)
if err != nil { panic(err) }
req.Header.Set("Idempotency-Key", "request-unique-001")
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getRepeatNumber&api_key=YOUR_API_KEY&number=380670000000&service=go", {
headers: {"Idempotency-Key": "request-unique-001"}
});
const result = await response.text();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getRepeatNumber&api_key=YOUR_API_KEY&number=380670000000&service=go",
headers={"Idempotency-Key": "request-unique-001"},
timeout=15,
)
print(response.status_code, response.text)応答
ACCESS_NUMBER:43:380670000000NUMBER_IN_USE- まず、現在のセッションを終了またはキャンセルします。通話中の場合は再発行は行いません。
- 新しいセッションは、新しい ID と現在の料金表を受け取ります。古い SMS はコピーされません。 refが再度設定されます。
- SMScash では、このアカウントの履歴の数字のみを繰り返すことができます。国は番号で識別されます。
- 削除されたセッションのキーは引き続き使用される:そのキーで再割り当てを行うと SESSION_CLOSED が返され、別の番号は発行されない。
GETgetSmsFullSMS を JSON として取得します+
ID、送信者、コード、テキスト、国、サービス、サプライヤーのデータを含むすべてのメッセージの構造化された履歴。
パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
api_key* | string | ユーザー個人の API キー。 |
id* | integer | 番号の発行時に受信したセッションの ID。 |
* 必須パラメータ。すべてのリクエストで、action=getSmsFull も渡します。
リクエスト例
curl 'https://smscash.org/stubs/handler_api.php?action=getSmsFull&api_key=YOUR_API_KEY&id=42'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getSmsFull&api_key=YOUR_API_KEY&id=42", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getSmsFull&api_key=YOUR_API_KEY&id=42");
const result = await response.json();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getSmsFull&api_key=YOUR_API_KEY&id=42",
timeout=15,
)
print(response.status_code, response.json())応答
{
"success": true,
"session_id": 42,
"phone": "380670000000",
"status": 1,
"status_name": "received",
"sms_count": 1,
"sms": [
{
"id": 101,
"external_id": "message-101",
"sender": "Service",
"code": "001234",
"text": "Код подтверждения: 001234",
"received_at": "2026-10-09T12:00:00Z",
"country": {
"id": 86,
"name": "Italy"
},
"service": {
"code": "go",
"name": "Google"
},
"provider": {
"id": 1,
"name": "Оператор 1"
}
}
],
"expires_at": "2026-10-09T12:20:00Z"
}- 統合に推奨される形式。新しいメッセージのみを処理するには、sms[].id を覚えておいてください。
- 数値ステータス SMScash: 1 - アクティブ、6 - 完了、8 - キャンセルまたは期限切れ。 status_name は、待機中、受信済み、完了、キャンセル、期限切れを区別します。
- セッションが終了した後も受信コードは利用可能です。大量のデータの場合は、after_idを使用してREST /activations/{id}/smsを利用してください。
- SMSのない数が削除された後、getStatusおよびgetSmsはSTATUS_CANCELに戻ります。getSmsFullは閉じた状態、空の電話番号、空のSMSリストを返します。REST、/activations/{id}、/smsは404、NO_ACTIVATIONに戻ります。
GETgetSmsSMSをテキスト文字列として取得します+
既存のクライアントの SMS 履歴全体を文字列形式で返します。
パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
api_key* | string | ユーザー個人の API キー。 |
id* | integer | 番号の発行時に受信したセッションの ID。 |
* 必須パラメータ。すべてのリクエストで、action=getSms も渡します。
リクエスト例
curl 'https://smscash.org/stubs/handler_api.php?action=getSms&api_key=YOUR_API_KEY&id=42'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getSms&api_key=YOUR_API_KEY&id=42", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getSms&api_key=YOUR_API_KEY&id=42");
const result = await response.text();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getSms&api_key=YOUR_API_KEY&id=42",
timeout=15,
)
print(response.status_code, response.text)応答
STATUS_OK:2026-10-09T12:00:00Z|001234|Код подтверждения: 001234STATUS_WAIT_CODESTATUS_CANCEL- メッセージ形式: 時刻|コード|テキスト。複数のメッセージはコロンで区切られます。
- テキスト SMS 自体にはコロンと縦棒が含まれる場合があります。信頼性の高い解析を行うには、getSmsFull を使用します。
GETgetServicesサービス+
利用可能なサービスコード。答えはAPIキーの領域に限定されます。
パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
api_key* | string | ユーザー個人の API キー。 |
country | integer | getCountries から ID を取得します。 |
* 必須パラメータ。すべてのリクエストで、action=getServices も渡します。
リクエスト例
curl 'https://smscash.org/stubs/handler_api.php?action=getServices&api_key=YOUR_API_KEY'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getServices&api_key=YOUR_API_KEY", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getServices&api_key=YOUR_API_KEY");
const result = await response.json();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getServices&api_key=YOUR_API_KEY",
timeout=15,
)
print(response.status_code, response.json())応答
{
"go": {
"name": "Google",
"code": "go"
}
}- サービスディレクトリはサプライヤー全体で共有されています。利用可能な数は別途確認されます。
GETgetCountries国+
選択されたチャンネル内の国々のID、名前、通話コード。
パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
api_key* | string | ユーザー個人の API キー。 |
* 必須パラメータ。すべてのリクエストで、action=getCountries も渡します。
リクエスト例
curl 'https://smscash.org/stubs/handler_api.php?action=getCountries&api_key=YOUR_API_KEY'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getCountries&api_key=YOUR_API_KEY", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getCountries&api_key=YOUR_API_KEY");
const result = await response.json();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getCountries&api_key=YOUR_API_KEY",
timeout=15,
)
print(response.status_code, response.json())応答
{
"86": {
"id": 86,
"name": "Italy",
"phone_code": "39"
}
}GETgetOperatorsオペレーター+
利用可能なオペレーター:API ID、名前、報酬の保留期間。
パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
api_key* | string | ユーザー個人の API キー。 |
country | integer | getCountries から ID を取得します。 |
operator | string | operators/getOperators (API) から ID を取得します。 operator=1 · any/0 |
* 必須パラメータ。すべてのリクエストで、action=getOperators も渡します。
リクエスト例
curl 'https://smscash.org/stubs/handler_api.php?action=getOperators&api_key=YOUR_API_KEY'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getOperators&api_key=YOUR_API_KEY", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getOperators&api_key=YOUR_API_KEY");
const result = await response.json();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getOperators&api_key=YOUR_API_KEY",
timeout=15,
)
print(response.status_code, response.json())応答
{
"1": {
"id": 1,
"provider_id": 1,
"operator": 1,
"name": "Оператор 1",
"earnings_hold_days": 45
}
}- operators/getOperators (API) から ID を取得します。
GETgetRewardsSMSの報酬+
料金は国によって異なります。すべての金額は支払われた SMSあたりのものです。
パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
api_key* | string | ユーザー個人の API キー。 |
country | integer | getCountries から ID を取得します。 |
service | string | 利用可能なサービスコード。答えはAPIキーの領域に限定されます。 |
operator | string | operators/getOperators (API) から ID を取得します。 operator=1 · any/0 |
* 必須パラメータ。すべてのリクエストで、action=getRewards も渡します。
リクエスト例
curl 'https://smscash.org/stubs/handler_api.php?action=getRewards&api_key=YOUR_API_KEY&country=59&service=vi'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getRewards&api_key=YOUR_API_KEY&country=59&service=vi", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getRewards&api_key=YOUR_API_KEY&country=59&service=vi");
const result = await response.json();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getRewards&api_key=YOUR_API_KEY&country=59&service=vi",
timeout=15,
)
print(response.status_code, response.json())応答
{
"59": {
"vi": {
"1": "0.01000000",
"3": "0.00500000"
}
}
}{}- USD関税額は8桁の正確な小数文字列として返される:
- キーで使用できる有効なプロバイダー。
- country ID → service code → operator ID → reward (USD)
GETgetBalanceユーザー残高+
追加 SMScash: 見越額、紹介ボーナス、支払いリクエストを考慮した利用可能な残高。
パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
api_key* | string | ユーザー個人の API キー。 |
* 必須パラメータ。すべてのリクエストで、action=getBalance も渡します。
リクエスト例
curl 'https://smscash.org/stubs/handler_api.php?action=getBalance&api_key=YOUR_API_KEY'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getBalance&api_key=YOUR_API_KEY", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getBalance&api_key=YOUR_API_KEY");
const result = await response.text();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getBalance&api_key=YOUR_API_KEY",
timeout=15,
)
print(response.status_code, response.text)応答
ACCESS_BALANCE:0.00- getBalance は利用可能な USD 残高を小数点以下最大 8 桁で返します。
- 保留期間が終了した資金のみ出金できます。
GETgetHoldBalance保留中+
SMSを受信すると、報酬はプロバイダーが定めた期間保留されます。指定日時になると、金額は自動的に出金可能になります。
パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
api_key* | string | ユーザー個人の API キー。 |
* 必須パラメータ。すべてのリクエストで、action=getHoldBalance も渡します。
リクエスト例
curl 'https://smscash.org/stubs/handler_api.php?action=getHoldBalance&api_key=YOUR_API_KEY'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getHoldBalance&api_key=YOUR_API_KEY", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getHoldBalance&api_key=YOUR_API_KEY");
const result = await response.text();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getHoldBalance&api_key=YOUR_API_KEY",
timeout=15,
)
print(response.status_code, response.text)応答
ACCESS_HOLD_BALANCE:34.50000001- SMScash · getHoldBalance · USD · 8
- 保留期間が終了した資金のみ出金できます。
レスポンスコードとリピートリクエスト
handler_api.php では、ビジネス結果には通常 HTTP 200 が含まれます。本文を確認してください。ディレクトリと getSmsFull は、成功すると JSON を返します。エラーは常にテキストです。
| コード | HTTP | 原因と次のステップ |
|---|---|---|
TARIFF_NOT_CONFIGURED | 200 | 料金はまだ定められていませんSMS報酬が設定されると、数の割り当てが開始されます。 |
COUNTRY_BLOCKED | 200 | この国の番号割り当てがブロックされています。別の国を選んでください。 |
BAD_SERVICE | 200 | このサービスへの電話番号の割り当てはブロックされています。別のサービスを選択してください。 |
PROVIDER_NOT_READY | 200 | 番号の割り当ては一時的に利用できませんAPI カタログを更新します。 |
BAD_KEY | 400 | api_key がないか、形式が無効です。リクエスト内のキーを確認してください。 |
INVALID_API_KEY | 401 | キーが不明であるか、取り消されているか、アカウントが無効になっています。有効な API キーを作成します。 |
BAD_COUNTRY | 400 | 国が欠落しているか、正の数ではありません。getCountries から ID を取得します。 |
BAD_SESSION_DURATION | 400 | 電話番号は正確に 20 分間だけ発行されます。session_duration を修正します。 |
BAD_REQUEST | 400 | 無効なパラメーターまたは Idempotency-Key。リクエストを修正してください。 |
BAD_SERVICE / BAD_OPERATOR / INVALID_PROVIDER | 200 | 不明または無効なディレクトリ項目です。API カタログを更新します。 |
BAD_NUMBER | 200 | 数値形式が正しくありません。数字を数字で与えてください。 |
BAD_ACTION / BAD_STATUS | 200 | 不明なコマンド、ID、または操作です。設定を確認してください。 |
EMPTY_POOL | 200 | 現在、一致する電話番号はありません。10 ~ 30 秒後に繰り返すか、フィルターを変更します。 |
NUMBER_IN_USE | 200 | 特定の番号がアクティブなセッションによって占有されています。セッションを終了するか、別の番号を選択してください。 |
NO_ACTIVATION | 200 | セッションまたは以前の番号はあなたのアカウントに属していません。IDとキーを確認してください。 |
SESSION_CLOSED / SMS_REQUIRED | 200 | 状態遷移は現在利用できません。SMSの状態と在庫状況を確認してください。 |
SCOPE_BLOCKED | 200 | サービス、国、またはベンダーはキーに対して認可されていません。API キーのスコープを更新します。 |
IDEMPOTENCY_CONFLICT | 200 | このクエリ キーはすでに他のパラメータに関連付けられています。新しい操作の場合は、別の Idempotency-Key を作成します。 |
BAD_REF / SELF_REF | 400 | ソフトウェア コードが不明であるか、無効になっているか、またはユーザー自身に属しています。ソフトウェア所有者のコードを渡します。 |
INTERNAL_ERROR | 500 | 一時的なサーバーまたはベンダーのエラー。時間を置いて同じ Idempotency-Key を繰り返します。 |
ALLOCATION_PENDING | 200 | 番号リクエストは処理中です。同じ Idempotency-Key で再試行してください。番号リクエストは処理中です。同じ Idempotency-Key で再試行してください。 |
ALLOCATION_UNCERTAIN | 200 | 割り当て結果は未確認です。2 つ目の番号の割り当てを防ぐため、自動再試行は無効です。割り当て結果は未確認です。2 つ目の番号の割り当てを防ぐため、自動再試行は無効です。 |
RESTはオブジェクトを返します {"error":{"code":"…","message":"…"}} および通常の HTTP ステータス 400/401/403/404/409/503.
{
"error": {
"code": "BAD_REQUEST",
"message": "リクエストフィールドを確認してください。",
"request_id": "req_…",
"hint": "Use the documented JSON type; numbers must not be quoted.",
"retryable": false,
"details": {
"field": "country",
"expected": "integer"
}
}
}X-Request-ID: included in every API response
405: Allow lists the supported HTTP methods
ALLOCATION_PENDING: retryable=true · Retry-After=3 · same operation key
ALLOCATION_UNCERTAIN: retryable=false · contact support
Transport errors: check the operation before another write; keep the original key.新しい統合の場合は REST
USD関税額は8桁の正確な小数文字列として返される: 0.00300000 USD.
残高の通貨は USD です。リクエストとレスポンスのスキーマ: OpenAPI.
/api/v1/catalogサービスと国/api/v1/tariffsSMS 国別の報酬率/api/v1/offers料金と特典/api/v1/servicesディレクトリ/api/v1/countriesディレクトリ/api/v1/operatorsディレクトリ/api/v1/availability?country=1利用可能な番号/api/v1/activations新しいセッション/api/v1/activations/batch?ids=42,43複数の番号を確認/api/v1/activations最新の 200 セッション:scope=history、待機中、または全て/api/v1/activations/{id}セッションとメッセージ/api/v1/activations/{id}/sms?after_id=0&limit=100カーソル付きの新しい SMS/api/v1/activations/{id}/retrySMSを待っています/api/v1/activations/{id}/finish完成/api/v1/activations/{id}/cancelキャンセル/api/v1/activations/repeat番号再発行/api/v1/keysAPI キー/api/v1/keysキーを作成する/api/v1/keys/{id}名前またはpolicyを変更します/api/v1/keys/{id}キーを取り消します/api/v1/referrals紹介コードと収益/api/v1/summary残高と概要/api/v1/balance保留中/api/v1/ledger収益台帳/api/v1/withdrawals支払いリクエスト/api/v1/withdrawalsリクエストを作成する/api/v1/statistics全体統計/api/v1/earnings/holds報酬の保留新しいSMSのみを受信します
GET /api/v1/activations/42/sms?after_id=0&limit=100
Authorization: Bearer YOUR_API_KEY{
"session_id": 42,
"sms": [
{
"id": 101,
"code": "001234",
"text": "コード: 001234",
"sender": "Service",
"received_at": "2026-10-09T12:00:00Z"
}
],
"next_cursor": 101,
"has_more": false
}next_cursor を保存し、after_id として渡します。 has_more=true の場合、次のページをすぐに読むことができます。 limit: 1 ~ 200。セッションと SMS は所有者のみが利用できます。