API מסמך
מספרים, הודעות והכנסות, ישירות מהאפליקציה שלך.
התחל עם בקשה אחת
יצירת מפתח 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
בחירה אוטומטית: הכי הרבה קודים בשעה האחרונה, ואז ב־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.המפתח אינו נשמר. בדיקה זו אינה מקצה מספרים.
שאר האינטגרציה החדשה
שירותים ומדינות
בחר שירות ומדינה.תשלום באמצעות SMS תלוי במדינה.
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
}בחירה אוטומטית: הכי הרבה קודים בשעה האחרונה, ואז ב־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 תלוי במדינה.
| קוד | תיאור |
|---|---|
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 שניות.אתה יכול לבטל מיד.
בסופו של דבר, ייחודי Idempotency-Key הוא זקוק להפרדה מספר, להפרדה חוזרת, דרישות פרישה ותשלום. הוא אופציונלי אך מומלץ ב handler_api.php. שימוש חוזר במפתח בעת פרישה בקשה רשת; להשתמש במפתח חדש עבור פעולה חדשה.
API Key Scope
ניתן להגביל מפתח לשירותים ספציפיים, מדינות ולספקים.רשימות ריקות מאפשרות את כל האפשרויות הזמינות.
{
"label": "תוכנה שלי",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} השם והפוליטיקה משתנים לחלוטין; הסוד מופיע רק כאשר הוא נוצר.
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 | לקחת ID מ getCountries. |
operator | string | לקחת ID מ operators/getOperators (API). operator=1 · any/0 |
session_duration | integer | הפגישה נמשכת 20 דקות, עובר 20 או מתעלם מהפרמטרים האלה. |
with_operator | integer | 1 מוסיף את מזהה המפעיל לתשובה; 0 או השמטת הפרמטר מחזירים שלושה חלקים. |
ref | string | קוד ציבורי של הבעלים של התוכנה: 5% עבורו ו 5% על ידי המוזמנים - ללא ref - 10% על ההזמנה |
* דרושים פרמטרים.בכל בקשות גם עובר פעולה=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- בחירה אוטומטית: הכי הרבה קודים בשעה האחרונה, ואז ב־24 שעות. אין מספרים: המפעיל הבא.
- עבור Idempotency-Key: אותו הבקשה עם אותה מפתחה חזירה את השאלה קודם. שינות את הפארמטרים IDEMPOTENCY_CONFLICT.
- מדינה מספרית ללא בריכה נותנת EMPTY_POOL; פורמט מדינה הלא נכון הוא BAD_COUNTRY.
- המפתח של הפגישה שנמחקת נשאר בשימוש: המשחק מחדש של ההפרדה עם המפתח הזה חוזר SESSION_CLOSED ואינו מוציא מספר נוסף.
- התוצאה של ההפצה אינה מאושרת.הפרישה אוטומטית אינה מאושרת כדי למנוע את ההפצה של מספר שני.
GETgetNumbersStatusבדוק את הזמינות+
מספר טלפון זמין לפי שירות ומדינה.
פרמטרים
| פרמטרים | סוג | תיאור |
|---|---|---|
api_key* | string | מפתח API אישי של המשתמש. |
country* | integer | לקחת ID מ getCountries. |
* דרושים פרמטרים.בכל בקשות גם עובר פעולה=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 suffix פירושו בחירה ללא מפעיל ספציפי.
- זמינות מתייחסת למרפסת הכללית של הספק.הערוץ הנבחר נבדק כאשר מספר מופץ.
GETgetStatusקבל את הקוד העדכני ביותר+
בקשה פשוטה למצב הפגישה ולקוד ה-SMS האחרון.הצ'רוס המובילים בקוד נשמרים.
פרמטרים
| פרמטרים | סוג | תיאור |
|---|---|---|
api_key* | string | מפתח API אישי של המשתמש. |
id* | integer | זיהוי הפגישה שלך, שהתקבל כאשר המספר הועבר. |
* דרושים פרמטרים.בכל בקשות גם עובר פעולה=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 | זיהוי הפגישה שלך, שהתקבל כאשר המספר הועבר. |
status* | integer | 3 – לחכות לקוד הבא ללא הרחבת הפגישה; 6 – לסיים לאחר SMS; 8 – לבטל מיד. |
* דרושים פרמטרים.בכל בקשות גם עובר פעולה=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 דקות המקוריות.התפרצות ותקופת התפוגה לא משתנה.
- על המצב =3 שימוש Idempotency-Key• אם תתאושש, לא תתאושש הקוד החדש שהתקבל. SMS נשארים זמינים
- ביטול לא מוריד את הפרסים שכבר הרוויחו.
- רק מספרים עם קוד SMS נשמרים בהיסטוריה.מספרים שנמחקו ונמחקו ללא קוד נמחקו.
GETgetRepeatNumberשוב את אותו המספר+
פותח ישיבה חדשה עם מספר מסוים מההיסטוריה שלך.אתה יכול לבחור שירות נוסף זמין באותה מדינה.
פרמטרים
| פרמטרים | סוג | תיאור |
|---|---|---|
api_key* | string | מפתח API אישי של המשתמש. |
number* | string | רק מספרים ואפשרויות מובילים + מותר. |
service* | string | קוד שירות זמין.התשובה מוגבלת לאזור המפתח API. |
session_duration | integer | הפגישה נמשכת 20 דקות, עובר 20 או מתעלם מהפרמטרים האלה. |
with_operator | integer | 1 מוסיף את מזהה המפעיל לתשובה; 0 או השמטת הפרמטר מחזירים שלושה חלקים. |
ref | string | קוד ציבורי של הבעלים של התוכנה: 5% עבורו ו 5% על ידי המוזמנים - ללא ref - 10% על ההזמנה |
operator | string | לקחת ID מ operators/getOperators (API). operator=1 · any/0 |
* דרושים פרמטרים.בכל בקשות גם עובר פעולה=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- ראשית, לסיים או לבטל את הפגישה הנוכחית שלך.אם המספר עסוק, לא מתבצע הפרישה מחדש.
- הפגישה החדשה מקבלת מזהה חדש ואת התשלום הנוכחי. SMS ישן אינו מנוהל אליו. ref מוגדר שוב.
- SMScash מאפשרת לחזור רק מספרים מההיסטוריה של חשבון זה.
- המפתח של הפגישה שנמחקת נשאר בשימוש: המשחק מחדש של ההפרדה עם המפתח הזה חוזר SESSION_CLOSED ואינו מוציא מספר נוסף.
GETgetSmsFullקבל SMS כ-JSON+
היסטוריה מבנית של כל ההודעות עם מזהה, שרת, קוד, טקסט ומדינה, שירות ונתונים של הספק.
פרמטרים
| פרמטרים | סוג | תיאור |
|---|---|---|
api_key* | string | מפתח API אישי של המשתמש. |
id* | integer | זיהוי הפגישה שלך, שהתקבל כאשר המספר הועבר. |
* דרושים פרמטרים.בכל בקשות גם עובר פעולה=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 מגדיר בין מחכה, מקבל, נגמר, מבוטל, נגמר.
- הקודים שהתקבלו יישארו זמינים לאחר סיום הפגישה.למגוון גדול, השתמש ב-REST /activations/{id}/sms עם after_id.
- אחרי מספר ללא SMS הוא נמחק, getStatus ו getSms חזרה STATUS_CANCEL; getSmsFull החזיר את המצב סגור, טלפון ריק וטלפון ריק sms רשימה REST /activations/{id} ו /sms חזרה 404 NO_ACTIVATION.
GETgetSmsקבל SMS כקובץ טקסט+
החזיר את ההיסטוריה של SMS כולו בפורמט שורת עבור לקוחות קיימים.
פרמטרים
| פרמטרים | סוג | תיאור |
|---|---|---|
api_key* | string | מפתח API אישי של המשתמש. |
id* | integer | זיהוי הפגישה שלך, שהתקבל כאשר המספר הועבר. |
* דרושים פרמטרים.בכל בקשות גם עובר פעולה=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 | לקחת ID מ getCountries. |
* דרושים פרמטרים.בכל בקשות גם עובר פעולה=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מדינות+
זיהוי, שמות וקוד שיחות עבור מדינות בערוץ הנבחר.
פרמטרים
| פרמטרים | סוג | תיאור |
|---|---|---|
api_key* | string | מפתח API אישי של המשתמש. |
* דרושים פרמטרים.בכל בקשות גם עובר פעולה=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, שם ותקופת החזקת התגמול.
פרמטרים
| פרמטרים | סוג | תיאור |
|---|---|---|
api_key* | string | מפתח API אישי של המשתמש. |
country | integer | לקחת ID מ getCountries. |
operator | string | לקחת ID מ operators/getOperators (API). operator=1 · any/0 |
* דרושים פרמטרים.בכל בקשות גם עובר פעולה=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
}
}- לקחת ID מ operators/getOperators (API).
GETgetRewardsתגמול עבור SMS+
כל סכום המסך הוא לפי SMS בתשלום.
פרמטרים
| פרמטרים | סוג | תיאור |
|---|---|---|
api_key* | string | מפתח API אישי של המשתמש. |
country | integer | לקחת ID מ getCountries. |
service | string | קוד שירות זמין.התשובה מוגבלת לאזור המפתח API. |
operator | string | לקחת ID מ operators/getOperators (API). operator=1 · any/0 |
* דרושים פרמטרים.בכל בקשות גם עובר פעולה=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 אישי של המשתמש. |
* דרושים פרמטרים.בכל בקשות גם עובר פעולה=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 אישי של המשתמש. |
* דרושים פרמטרים.בכל בקשות גם עובר פעולה=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התוצאות העסקים בדרך כלל באים עם 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 | המדינה חסרה או לא מספר חיובי.לקחת ID מ getCountries. |
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 | פקודה, זיהוי או פעולה לא ידועים.בדוק את ההגדרות |
EMPTY_POOL | 200 | כרגע אין מספר טלפון מתאים.חוזרים אחרי 10-30 שניות או שינויים בסרטנים. |
NUMBER_IN_USE | 200 | מספר מסוים מנוהל על ידי ישיבה פעילה.לסיים את הפגישה או בחר מספר אחר. |
NO_ACTIVATION | 200 | המפגש או המספר הקודם אינם שייכים לחשבון שלך.בדוק את המפתח ואת המפתח. |
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 | התוצאה של ההפצה אינה מאושרת.הפרישה אוטומטית אינה מאושרת כדי למנוע את ההפצה של מספר שני.התוצאה של ההפצה אינה מאושרת.הפרישה אוטומטית אינה מאושרת כדי למנוע את ההפצה של מספר שני. |
שאר החזיר אובייקט {"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.שאר האינטגרציה החדשה
סכום המכס של 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/activations200 הפגישות האחרונות: scope=history, waiting or all/api/v1/activations/{id}ישיבה וסיפורים/api/v1/activations/{id}/sms?after_id=0&limit=100SMS עם קורסור/api/v1/activations/{id}/retryמחכה ל-SMS/api/v1/activations/{id}/finishסיום/api/v1/activations/{id}/cancelביטול/api/v1/activations/repeatמספר חוזר/api/v1/keysAPI מפתח/api/v1/keysיצירת מפתח/api/v1/keys/{id}שינוי שם או מדיניות/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 זמינים רק לבעלי