توثيق API
ابدأ بطلب واحد
قم بإنشاء مفتاح API في لوحة التحكم الخاصة بك، حصل على رقم، وتحقق من الرسائل كل 10 ثوانٍ. يتم دفع المبلغ عند وصول SMS مع كود؛ قراءته مرة أخرى لا يؤثر على رصيدك.
https://smscash.org/api/v1https://smscash.org/stubs/handler_api.phpcurl --get 'https://smscash.org/stubs/handler_api.php' \
--data-urlencode 'api_key=YOUR_API_KEY' \
--data-urlencode 'action=getNumber' \
--data-urlencode 'service=go' \
--data-urlencode 'country=86'عنوان الواجهة البديل المتوافق: /handler_api.php. تستمر عمليات تكامل REST الموجودة في العمل.
منشئ الطلبات
https://smscash.org/stubs/handler_api.phpcurl --max-time 15 --fail-with-body 'https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1'package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
endpoint, err := url.Parse("https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1")
if err != nil { panic(err) }
query := endpoint.Query()
query.Set("api_key", os.Getenv("SMSCASH_API_KEY"))
endpoint.RawQuery = query.Encode()
req, err := http.NewRequest("GET", endpoint.String(), nil)
if err != nil { panic(err) }
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) }
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil { panic(err) }
fmt.Println(res.StatusCode, string(body))
}// Node.js 18+: set SMSCASH_API_KEY in your environment.
const url = new URL("https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1");
url.searchParams.set("api_key", process.env.SMSCASH_API_KEY);
const response = await fetch(url, {
method: 'GET',
signal: AbortSignal.timeout(15000),
redirect: 'error',
});
const result = await response.text();
console.log(response.status, result);
// SMS codes are strings: keep leading zeros. Never repeat issuance automatically.import json
import os
import urllib.error
import urllib.parse
import urllib.request
class NoRedirect(urllib.request.HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
return None
url = "https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1"
parts = urllib.parse.urlsplit(url)
params = dict(urllib.parse.parse_qsl(parts.query))
params["api_key"] = os.environ["SMSCASH_API_KEY"]
url = urllib.parse.urlunsplit(parts._replace(query=urllib.parse.urlencode(params)))
request = urllib.request.Request(url, method='GET')
try:
with urllib.request.build_opener(NoRedirect).open(request, timeout=15) as response:
result = response.read().decode("utf-8")
print(response.status, result)
except urllib.error.HTTPError as error:
print(error.code, error.read().decode('utf-8'))
raise
# No automatic retries; SMS codes remain strings.لا يتم حفظ المفتاح. هذا التحقق لا يخصص أرقامًا.
REST لعمليات التكامل الجديدة
الخدمات والدول
اختر خدمة وبلداً. يعتمد المبلغ المدفوع لكل رسالة 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)
احصل على رقم
GET /stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86اختيار تلقائي: مشغّل متاح عشوائياً.
ACCESS_NUMBER: session ID · phone number
service + country · session_duration: 20
ref: software owner code (optional)
operator: public ID (e.g. 1) or comma-separated IDs (e.g. "1,3")
optional · omitted/any/0: random eligible provider
country: integer · service: string · SMS code: stringرقم الهاتف صالح لمدة 20 دقيقة. يتم التحقق من الرسائل كل 10 ثانية. يمكنك الإلغاء فورًا.
التحقق من عدة أرقام
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": 10
}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';
const api = new SmScash(process.env.SMSCASH_API_KEY);
const catalog = await api.catalog({service: 'go', country: 86});
console.log(catalog.rows);
const messages = await api.sms(42, {afterId: 0});
console.log(messages.sms);
const statuses = await api.batch([42]);
const held = await api.holdBalance();
console.log(held); // Exact USD stringimport os
from smscash import SmScash, SmScashError
api = SmScash(os.environ['SMSCASH_API_KEY'])
catalog = api.catalog(service='go', country=86)
print(catalog['rows'])
messages = api.sms(42, after_id=0)
print(messages['sms'])
statuses = api.batch([42])
held = api.hold_balance()
print(held) # Exact USD stringme() · balance() · holdBalance()/hold_balance() · catalog() · activation() · sms() · batch()
setStatus(id, "cancel") / set_status(id, "cancel")
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'{
"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, e.g. 1,3); 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.
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 دقيقة. يتم التحقق من الرسائل كل 10 ثانية. يمكنك الإلغاء فورًا.
المصادقة وإعادة المحاولة
REST: header Authorization: Bearer YOUR_API_KEY. واجهة متوافقة: المعلمات api_key و action. استخدم HTTPS.
لإدارة مفاتيح API، أدخل حسابك.
لا يوجد حد لمعدل الطلبات أو عدد أرقام الهاتف. ولا توجد حصص يومية أو ساعية.
رقم الهاتف صالح لمدة 20 دقيقة. يتم التحقق من الرسائل كل 10 ثانية. يمكنك الإلغاء فورًا.
نطاق مفتاح 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 | خذ ID من getCountries. |
operator | string | Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3. operator=1 · operator=1,3 · any/0 |
session_duration | integer | الجلسة تستمر 20 دقيقة. اختار 20 أو تجاهل هذا المعامل. |
with_operator | integer | 1 يضيف معرّف المشغّل إلى الرد؛ 0 أو عدم تحديده يعيد ثلاثة أجزاء. |
ref | string | Публичный код владельца софта: 5% ему и 5% пригласившему. Без ref — 10% пригласившему. Неизвестный, отключённый, некорректный или собственный ref игнорируется: запрос продолжается без бонуса владельцу софта. Действующие коды и прежние условия уже выданных сессий сохраняются. |
* المعلمة المطلوبة. في كافة الطلبات، قم أيضًا بتمرير action=getNumber.
طلب مثال
curl 'https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1'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) }
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");
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",
timeout=15,
)
print(response.status_code, response.text)الردود
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- اختيار تلقائي: مشغّل متاح عشوائياً.
- بلد رقمي بدون تجمع يعطي EMPTY_POOL؛ تنسيق البلد الخاطئ هو BAD_COUNTRY.
- مفتاح الجلسة المحذوف لا يزال قيد الاستخدام: إعادة تشغيل التخصيص بذلك المفتاح يعطي SESSION_CLOSED ولا يُصدر رقمًا آخر.
- لم يتم تأكيد نتيجة الإصدار. أُوقف التكرار التلقائي لتجنب إصدار رقم ثانٍ.
GETgetNumbersStatusتحقق من التوفر+
عدد أرقام الهاتف المتاحة حسب الخدمة والبلد.
المعلمات
| المعلمة | اكتب | الوصف |
|---|---|---|
api_key* | string | مفتاح API الشخصي للمستخدم. |
country* | integer | خذ ID من getCountries. |
* المعلمة المطلوبة. في كافة الطلبات، قم أيضًا بتمرير 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'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) }
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");
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",
timeout=15,
)
print(response.status_code, response.text)الردود
ACCESS_RETRY_GETACCESS_ACTIVATIONACCESS_CANCEL- يُعاد المحاولة ويتوقع الانتظار للكود التالي خلال 20 دقائق الأصلية. لا تتغير أوقات المشكلة والموت الأجل.
- الإلغاء لا يخصم الأرباح المكتسبة سابقًا.
- فقط الأرقام التي تحتوي على كود 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% пригласившему. Неизвестный, отключённый, некорректный или собственный ref игнорируется: запрос продолжается без бонуса владельцу софта. Действующие коды и прежние условия уже выданных сессий сохраняются. |
operator | string | Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3. operator=1 · operator=1,3 · any/0 |
* المعلمة المطلوبة. في كافة الطلبات، قم أيضًا بتمرير action=getRepeatNumber.
طلب مثال
curl 'https://smscash.org/stubs/handler_api.php?action=getRepeatNumber&api_key=YOUR_API_KEY&number=380670000000&service=go'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) }
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");
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",
timeout=15,
)
print(response.status_code, response.text)الردود
ACCESS_NUMBER:43:380670000000NUMBER_IN_USE- أولاً، قم بإنهاء أو إلغاء جلستك الحالية. في حالة انشغال الرقم، لا يتم إعادة الإصدار.
- تتلقى الجلسة الجديدة ID الجديد والتعريفة الحالية. لم يتم نسخ SMS القديم فيه. تم ضبط ref مرة أخرى.
- يسمح SMScash بتكرار الأرقام فقط من تاريخ هذا الحساب. يتم تحديد الدولة بالرقم.
- مفتاح الجلسة المحذوف لا يزال قيد الاستخدام: إعادة تشغيل التخصيص بذلك المفتاح يعطي SESSION_CLOSED ولا يُصدر رقمًا آخر.
GETgetSmsFullاحصل على SMS كـ 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": "operator=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 | 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.
الدليل
النشر…
| الاسم | رمز الخدمة service |
|---|
مسار الخدمة يتم مشاركته بين الموردين. ويتم فحص توافر الأرقام بشكل منفصل.
يمكن ربط المفتاح بخدمات وبلدان ومزوّدين محددين. تسمح القوائم الفارغة بجميع الخيارات المتاحة.
المعلمات
| المعلمة | اكتب | الوصف |
|---|---|---|
api_key* | string | مفتاح API الشخصي للمستخدم. |
country | integer | خذ ID من getCountries. |
* المعلمة المطلوبة. في كافة الطلبات، قم أيضًا بتمرير 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البلدان+
أرقام التعريف، الأسماء، ورموز الاتصال للدول في القناة المختارة.
الدليل
النشر…
| الاسم | معرّف الدولة country |
|---|
يمكن ربط المفتاح بخدمات وبلدان ومزوّدين محددين. تسمح القوائم الفارغة بجميع الخيارات المتاحة.
المعلمات
| المعلمة | اكتب | الوصف |
|---|---|---|
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 والاسم ومدة حجز الأرباح.
المعلمات
| المعلمة | اكتب | الوصف |
|---|---|---|
api_key* | string | مفتاح API الشخصي للمستخدم. |
country | integer | خذ ID من getCountries. |
operator | string | Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3. operator=1 · operator=1,3 · 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": "operator=1",
"earnings_hold_days": 45
}
}- Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3.
GETgetRewardsمكافأة لSMS+
تختلف الأسعار حسب البلد. جميع قيم الجدول هي بالسعر المدفوع SMS.
المعلمات
| المعلمة | اكتب | الوصف |
|---|---|---|
api_key* | string | مفتاح API الشخصي للمستخدم. |
country | integer | خذ ID من getCountries. |
service | string | رموز الخدمة المتاحة. تقتصر الإجابة على مساحة مفتاح API. |
operator | string | Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3. operator=1 · operator=1,3 · 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)
GETgetTopCountriesByServiceТоп стран по сервису+
До 10 стран с лучшей доставкой смс кодов за последние 24 часа
المعلمات
| المعلمة | اكتب | الوصف |
|---|---|---|
api_key* | string | مفتاح API الشخصي للمستخدم. |
service* | string | Код сервиса из getServices. |
* المعلمة المطلوبة. في كافة الطلبات، قم أيضًا بتمرير action=getTopCountriesByService.
طلب مثال
curl 'https://smscash.org/stubs/handler_api.php?action=getTopCountriesByService&api_key=YOUR_API_KEY&service=go'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getTopCountriesByService&api_key=YOUR_API_KEY&service=go", 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=getTopCountriesByService&api_key=YOUR_API_KEY&service=go");
const result = await response.json();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getTopCountriesByService&api_key=YOUR_API_KEY&service=go",
timeout=15,
)
print(response.status_code, response.json())الردود
Структура ответа
| Ключ в примере | الوصف | الدليل |
|---|---|---|
["12"], ["36"] | معرّف الدولة Первый, внешний уровень JSON. Каждая запись объединяет операторов одной страны. | getCountries |
["12"]["1"], ["12"]["3"] | ID оператора Второй уровень JSON, внутри страны. Это публичный ID оператора (поставщика), который передаётся в параметре operator. | getOperators |
{
"12": {
"1": {
"reward": 0.012,
"count": 542
},
"3": {
"reward": 0.014,
"count": 301
}
},
"36": {
"1": {
"reward": 0.011,
"count": 190
}
}
}{}- В примере ["12"]["1"] — данные оператора 1 в стране 12. ID стран берутся из getCountries, ID операторов — из getOperators.
- reward — действующее личное вознаграждение в USD, JSON-число. count — количество выданных номеров за последние 24 часа, включая сессии без кода.
- Рейтинг рассчитывается как все полученные непустые коды, делённые на все выдачи номеров за последние 24 часа для выбранного сервиса.
- Повторные непустые коды увеличивают числитель; конверсия может превышать 100%. Начальные нули сохраняются.
- Суточная статистика сервиса кэшируется на 10 минут. Тарифы и ограничения ключа проверяются при каждом запросе. Момент среза — в заголовке X-Statistics-As-Of.
- Нет данных или доступных связок — пустой объект {}. Страны с выдачами и нулём кодов имеют нулевую конверсию. Порядок ключей JSON не задаёт места в рейтинге.
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 | البلد مفقود أو ليس رقمًا موجبًا.خذ ID من getCountries. |
BAD_SESSION_DURATION | 400 | تُصدر أرقام الهواتف لمدة 20 دقيقة فقط.تصحيح session_duration. |
BAD_REQUEST | 400 | التحقق من حقول الطلب.يرجى تصحيح طلبك. |
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. |
INTERNAL_ERROR | 500 | خطأ مؤقت في الخادم أو البائع.التواصل والدعم · X-Request-ID |
ALLOCATION_PENDING | 200 | في انتظارgetActiveActivations · getStatus |
ALLOCATION_UNCERTAIN | 200 | لم يتم تأكيد نتيجة الإصدار. أُوقف التكرار التلقائي لتجنب إصدار رقم ثانٍ.لم يتم تأكيد نتيجة الإصدار. أُوقف التكرار التلقائي لتجنب إصدار رقم ثانٍ. |
تعيد 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=100SMS جديد مع المؤشر/api/v1/activations/{id}/retryفي انتظار SMS/api/v1/activations/{id}/finishالانتهاء/api/v1/activations/{id}/cancelإلغاء/api/v1/activations/repeatإعادة إصدار الرقم/api/v1/keysمفاتيح API/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 متاحة للمالك فقط.