Tài liệu API
Số lượng, tin nhắn và thu nhập, trực tiếp từ ứng dụng của bạn.
Bắt đầu với một yêu cầu
Tạo một phím API trong bảng điều khiển của bạn, nhận một số và kiểm tra cho các tin nhắn mỗi 20 giây. thanh toán được tín dụng khi một tin nhắn SMS với mã đến; đọc lại nó không ảnh hưởng đến cân bằng của bạn.
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}'Địa chỉ giao diện tương thích thay thế: /handler_api.php. Các kết hợp REST hiện có vẫn còn hoạt động.
Trình tạo yêu cầu
Idempotency-Key: UUID · POST · 8–128
Tự động chọn: nhiều mã nhất trong giờ qua, sau đó trong 24 giờ. Hết số: nhà mạng tiếp theo.
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.Khóa không được lưu. Kiểm tra này không cấp số.
Lời bài hát: REST FOR NEW INTEGRATION
Dịch vụ và quốc gia
Chọn một dịch vụ và quốc gia. thanh toán qua SMS phụ thuộc vào quốc gia.
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)
Nhận một số
POST /api/v1/activations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Idempotency-Key: request-unique-001
{
"service": "go",
"country": 86
}Tự động chọn: nhiều mã nhất trong giờ qua, sau đó trong 24 giờ. Hết số: nhà mạng tiếp theo.
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: stringSố điện thoại có hiệu lực trong 20 phút. SMS được kiểm tra mỗi 20 giây.
Kiểm tra nhiều số
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 messageSố dư · Đang tạm giữ
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 — Khả dụng; held_balance — Đang tạm giữ. USD · 8
Chỉ có thể rút tiền đã hết thời gian tạm giữ.
Ứng dụng khách sẵn dùng
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.phpKhóa API cá nhân của người dùng.
Chọn một dịch vụ và quốc gia. thanh toán qua SMS phụ thuộc vào quốc gia.
| Mã | Mô tả |
|---|---|
getNumber / getNumberV2 | Nhận một số |
getStatus / getStatusV2 | Nhận mã mới nhất |
setStatus / finishActivation / cancelActivation | Quản lý session |
getPrices / getNumbersStatus | Kiểm tra khả dụng |
getRewards (SMScash) | Giải thưởng cho SMS |
getServicesList / getServices | Dịch vụ |
getCountries / getOperators | Dịch vụ và quốc gia |
getActiveActivations | Các buổi |
getBalance | Số dư người dùng |
getHoldBalance (SMScash) | Đang tạm giữ |
cost = 0 USD · activationCost = 0 USDreward — Giải thưởng cho 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.Số điện thoại có hiệu lực trong 20 phút. SMS được kiểm tra mỗi 20 giây.
xác thực và rút lui
REST: header người Authorization: Bearer YOUR_API_KEY. Giao diện tương thích: Các Parameters api_key và actionSử dụng HTTPS
Để quản lý các phím API, nhập tài khoản của bạn.
Tần số yêu cầu API và số điện thoại không giới hạn.Không có chi phí hàng ngày hoặc giờ.
Số điện thoại có hiệu lực trong 20 phút. SMS được kiểm tra mỗi 20 giây.
Trong phần còn lại, một Idempotency-Key cần thiết cho số phân bổ, lặp lại phân bổ, rút tiền và yêu cầu thanh toán. nó là tùy chọn nhưng được khuyến cáo trong handler_api.php. tái sử dụng khóa khi rút tiền yêu cầu mạng; sử dụng một khóa mới cho một hoạt động mới.
API Khóa
Bạn có thể giới hạn một khóa cho các dịch vụ cụ thể, quốc gia và nhà cung cấp. Danh sách trống cho phép tất cả các tùy chọn có sẵn.
{
"label": "Phần mềm của tôi",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} thay đổi tên và chính sách hoàn toàn. bí mật chỉ được hiển thị khi được tạo ra.
10% tổng cộng. 5% + 5% với mã phần mềm.
Khi phát hành một số, xin vui lòng cung cấp ref chủ sở hữu của phần mềm. yêu cầu được ủy quyền bởi chìa khóa của người dùng. Mã nằm trong phần "Điều hướng" và trong GET /api/v1/referrals → software_ref.
| yêu cầu | mời | Phần mềm |
|---|---|---|
| Không có ref | 10% | — |
| với ref | 5% | 5% |
| Với ref, không có referrer | — | 5% |
Các nền tảng trả tiền thưởng mà không làm giảm lợi nhuận của người dùng. chủ sở hữu phần mềm và người tham khảo có thể là cùng một người. một người dùng không thể sử dụng mã của riêng mình.
Các điều khoản được xác định khi một phiên được tạo; đọc SMS và rút lại không thay đổi chúng. Pass ref một lần nữa cho một phiên lặp lại mới. Trong tính toán thuế, một phần thưởng lao động của USD 0.003 cho USD 0.00015 mỗi cho chủ sở hữu phần mềm và người tham khảo. Tổng phần thưởng là USD 0.00030.
Lệnh API
11 phương pháp phong cách XVBC cộng với cân bằng SMScash của bạn.
GETgetNumberNhận một số+
Tạo một buổi họp và đặt số sẵn có cho người dùng. tỷ lệ phần thưởng và người nhận tham khảo được xác định tại phân bổ; phần thưởng được ghi nhận khi một tin nhắn SMS với mã đến.
Các Parameters
| Các Parameter | loại | Mô tả |
|---|---|---|
api_key* | string | Khóa API cá nhân của người dùng. |
service* | string | Có sẵn mã dịch vụ. câu trả lời là giới hạn đến khu vực của khóa API. |
country* | integer | Nhận ID từ getCountries. |
operator | string | Nhận ID từ operators/getOperators (API). operator=1 · any/0 |
session_duration | integer | Các phiên kéo dài 20 phút. vượt qua 20 hoặc bỏ qua thông số này. |
with_operator | integer | 1 thêm ID nhà mạng vào phản hồi; 0 hoặc bỏ qua tham số trả về ba phần. |
ref | string | Mã công cộng của chủ sở hữu phần mềm: 5% Đối với anh ta và 5% cho khách mời, không ref - 10% cho người mời. |
* Cần thông số. trong tất cả các yêu cầu cũng thông qua hành động=getNumber.
Ví dụ yêu cầu
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)Câu trả lời
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- Tự động chọn: nhiều mã nhất trong giờ qua, sau đó trong 24 giờ. Hết số: nhà mạng tiếp theo.
- Thôi Idempotency-Key: một yêu cầu với một chìa khóa trở lại cuộc họp trước. thay đổi gọi IDEMPOTENCY_CONFLICT.
- Một quốc gia số mà không có hồ bơi cho EMPTY_POOL; định dạng quốc gia sai là BAD_COUNTRY.
- Chìa khóa của một phiên bị xóa vẫn còn được sử dụng: chơi lại phân bổ với khóa đó trả về SESSION_CLOSED và không phát hành số khác.
- Kết quả phân bổ không được xác nhận. tự động rút lại bị vô hiệu hóa để tránh phân bổ số thứ hai.
GETgetNumbersStatusKiểm tra khả dụng+
Số điện thoại có sẵn theo dịch vụ và quốc gia.
Các Parameters
| Các Parameter | loại | Mô tả |
|---|---|---|
api_key* | string | Khóa API cá nhân của người dùng. |
country* | integer | Nhận ID từ getCountries. |
* Cần thông số. trong tất cả các yêu cầu cũng thông qua hành động=getNumbersStatus.
Ví dụ yêu cầu
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())Câu trả lời
{
"go_0": 0
}- _0 suffix có nghĩa là một sự lựa chọn mà không có một nhà điều hành cụ thể.
- Tính sẵn có liên quan đến tổng hồ bơi của nhà cung cấp. kênh được chọn được kiểm tra khi một số được phân bổ.
GETgetStatusNhận mã mới nhất+
Yêu cầu đơn giản cho tình trạng phiên và mã SMS cuối cùng.Những điểm số hàng đầu trong mã được giữ lại.
Các Parameters
| Các Parameter | loại | Mô tả |
|---|---|---|
api_key* | string | Khóa API cá nhân của người dùng. |
id* | integer | ID của phiên của bạn, nhận được khi số đã được phát hành. |
* Cần thông số. trong tất cả các yêu cầu cũng thông qua hành động=getStatus.
Ví dụ yêu cầu
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)Câu trả lời
STATUS_WAIT_CODESTATUS_OK:001234STATUS_CANCELNO_ACTIVATION- Poll mỗi 20 Đọc một tin nhắn một lần nữa không tạo ra một khoản thanh toán khác.
- Sau khi rút lại, mã cũ không được trả lại: getStatus chờ cho SMS tiếp theo.
- Sau một số mà không có SMS bị xóa, getStatus và getSms trở lại STATUS_CANCEL; getSmsFull trả lại trạng thái đóng, một điện thoại trống và một trạng thái trống sms Danh sách REST /activations/{id} và /sms trở lại 404 NO_ACTIVATION.
GETsetStatusQuản lý session+
Kết thúc, hủy hoặc tái lập chờ SMS. phiên kết thúc vẫn là tương tự.
Các Parameters
| Các Parameter | loại | Mô tả |
|---|---|---|
api_key* | string | Khóa API cá nhân của người dùng. |
id* | integer | ID của phiên của bạn, nhận được khi số đã được phát hành. |
status* | integer | 3 – chờ cho mã tiếp theo mà không kéo dài phiên; 6 – kết thúc sau khi SMS; 8 – hủy ngay lập tức. |
* Cần thông số. trong tất cả các yêu cầu cũng thông qua hành động=setStatus.
Ví dụ yêu cầu
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)Câu trả lời
ACCESS_RETRY_GETACCESS_ACTIVATIONACCESS_CANCEL- Retry chờ cho mã tiếp theo trong vòng 20 phút ban đầu. thời gian phát hành và hết hạn không thay đổi.
- Đối với status=3 Sử dụng Idempotency-Key: lặp lại yêu cầu sẽ không tái cài đặt mã mới đã nhận được. SMS vẫn còn sẵn dùng.
- Việc hủy bỏ không loại bỏ phần thưởng đã kiếm được.
- Chỉ số có mã SMS được giữ trong lịch sử. số bị hủy và hết hạn mà không có mã được xóa.
GETgetRepeatNumberLặp lại cùng một số+
Mở một phiên mới với một số cụ thể từ lịch sử của bạn. bạn có thể chọn một dịch vụ khác có sẵn trong cùng một quốc gia.
Các Parameters
| Các Parameter | loại | Mô tả |
|---|---|---|
api_key* | string | Khóa API cá nhân của người dùng. |
number* | string | Chỉ có số và một người dẫn + tùy chọn được phép. |
service* | string | Có sẵn mã dịch vụ. câu trả lời là giới hạn đến khu vực của khóa API. |
session_duration | integer | Các phiên kéo dài 20 phút. vượt qua 20 hoặc bỏ qua thông số này. |
with_operator | integer | 1 thêm ID nhà mạng vào phản hồi; 0 hoặc bỏ qua tham số trả về ba phần. |
ref | string | Mã công cộng của chủ sở hữu phần mềm: 5% Đối với anh ta và 5% cho khách mời, không ref - 10% cho người mời. |
operator | string | Nhận ID từ operators/getOperators (API). operator=1 · any/0 |
* Cần thông số. trong tất cả các yêu cầu cũng thông qua hành động=getRepeatNumber.
Ví dụ yêu cầu
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)Câu trả lời
ACCESS_NUMBER:43:380670000000NUMBER_IN_USE- Đầu tiên, chấm dứt hoặc hủy phiên hiện tại của bạn.Nếu số đang bận rộn, tái xuất không được thực hiện.
- Cuộc họp mới nhận được một ID mới và phí hiện tại. SMS cũ không được sao chép vào nó. ref được thiết lập lại.
- SMScash cho phép lặp lại chỉ số từ lịch sử tài khoản này.
- Chìa khóa của một phiên bị xóa vẫn còn được sử dụng: chơi lại phân bổ với khóa đó trả về SESSION_CLOSED và không phát hành số khác.
GETgetSmsFullNhận SMS như JSON+
Lịch sử cấu trúc của tất cả các tin nhắn với ID, gửi, mã, văn bản và quốc gia, dịch vụ và dữ liệu nhà cung cấp.
Các Parameters
| Các Parameter | loại | Mô tả |
|---|---|---|
api_key* | string | Khóa API cá nhân của người dùng. |
id* | integer | ID của phiên của bạn, nhận được khi số đã được phát hành. |
* Cần thông số. trong tất cả các yêu cầu cũng thông qua hành động=getSmsFull.
Ví dụ yêu cầu
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())Câu trả lời
{
"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"
}- Nhớ sms[].id để chỉ xử lý tin nhắn mới.
- Tình trạng số SMScash: 1 - hoạt động, 6 - hoàn thành, 8 - hủy hoặc hết hạn. status_name phân biệt giữa chờ đợi, nhận được, hoàn thành, hủy, hết hạn.
- Mã nhận được vẫn còn sẵn dùng sau khi một phiên kết thúc. Đối với khối lượng lớn, sử dụng REST /activations/{id}/sms với after_id.
- Sau một số mà không có SMS bị xóa, getStatus và getSms trở lại STATUS_CANCEL; getSmsFull trả lại trạng thái đóng, một điện thoại trống và một trạng thái trống sms Danh sách REST /activations/{id} và /sms trở lại 404 NO_ACTIVATION.
GETgetSmsNhận SMS như một dòng văn bản+
Trả lại toàn bộ lịch sử SMS trong định dạng string cho khách hàng hiện có.
Các Parameters
| Các Parameter | loại | Mô tả |
|---|---|---|
api_key* | string | Khóa API cá nhân của người dùng. |
id* | integer | ID của phiên của bạn, nhận được khi số đã được phát hành. |
* Cần thông số. trong tất cả các yêu cầu cũng thông qua hành động=getSms.
Ví dụ yêu cầu
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)Câu trả lời
STATUS_OK:2026-10-09T12:00:00Z|001234|Код подтверждения: 001234STATUS_WAIT_CODESTATUS_CANCEL- Định dạng tin nhắn: thời gian ẩncode ẩntext. nhiều tin nhắn được tách ra bởi một cột.
- Bản thân SMS văn bản có thể chứa các cột và thanh dọc. Để phân đoạn đáng tin cậy, sử dụng getSmsFull.
GETgetServicesDịch vụ+
Có sẵn mã dịch vụ. câu trả lời là giới hạn đến khu vực của khóa API.
Các Parameters
| Các Parameter | loại | Mô tả |
|---|---|---|
api_key* | string | Khóa API cá nhân của người dùng. |
country | integer | Nhận ID từ getCountries. |
* Cần thông số. trong tất cả các yêu cầu cũng thông qua hành động=getServices.
Ví dụ yêu cầu
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())Câu trả lời
{
"go": {
"name": "Google",
"code": "go"
}
}- Danh mục dịch vụ được chia sẻ trên toàn bộ nhà cung cấp. Số khả dụng được kiểm tra riêng biệt.
GETgetCountriesQuốc gia+
ID, tên và mã gọi cho các quốc gia trong kênh được chọn.
Các Parameters
| Các Parameter | loại | Mô tả |
|---|---|---|
api_key* | string | Khóa API cá nhân của người dùng. |
* Cần thông số. trong tất cả các yêu cầu cũng thông qua hành động=getCountries.
Ví dụ yêu cầu
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())Câu trả lời
{
"86": {
"id": 86,
"name": "Italy",
"phone_code": "39"
}
}GETgetOperatorsNhà điều hành+
Nhà cung cấp khả dụng: ID API, tên và thời gian giữ tiền thưởng.
Các Parameters
| Các Parameter | loại | Mô tả |
|---|---|---|
api_key* | string | Khóa API cá nhân của người dùng. |
country | integer | Nhận ID từ getCountries. |
operator | string | Nhận ID từ operators/getOperators (API). operator=1 · any/0 |
* Cần thông số. trong tất cả các yêu cầu cũng thông qua hành động=getOperators.
Ví dụ yêu cầu
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())Câu trả lời
{
"1": {
"id": 1,
"provider_id": 1,
"operator": 1,
"name": "Оператор 1",
"earnings_hold_days": 45
}
}- Nhận ID từ operators/getOperators (API).
GETgetRewardsGiải thưởng cho SMS+
Các tỷ lệ phụ thuộc vào quốc gia. Tất cả số tiền bảng là mỗi SMS trả tiền.
Các Parameters
| Các Parameter | loại | Mô tả |
|---|---|---|
api_key* | string | Khóa API cá nhân của người dùng. |
country | integer | Nhận ID từ getCountries. |
service | string | Có sẵn mã dịch vụ. câu trả lời là giới hạn đến khu vực của khóa API. |
operator | string | Nhận ID từ operators/getOperators (API). operator=1 · any/0 |
* Cần thông số. trong tất cả các yêu cầu cũng thông qua hành động=getRewards.
Ví dụ yêu cầu
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())Câu trả lời
{
"59": {
"vi": {
"1": "0.01000000",
"3": "0.00500000"
}
}
}{}- Số tiền thuế USD được trả lại như các dây thập giá chính xác với 8 vị trí thập giá:
- Các nhà cung cấp có sẵn cho khóa của bạn.
- country ID → service code → operator ID → reward (USD)
GETgetBalanceSố dư người dùng+
Thêm SMScash: cân bằng có sẵn, tính đến khoản thu, tiền thưởng tham khảo và yêu cầu thanh toán.
Các Parameters
| Các Parameter | loại | Mô tả |
|---|---|---|
api_key* | string | Khóa API cá nhân của người dùng. |
* Cần thông số. trong tất cả các yêu cầu cũng thông qua hành động=getBalance.
Ví dụ yêu cầu
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)Câu trả lời
ACCESS_BALANCE:0.00- getBalance trả về cân bằng USD có sẵn với 8 vị trí thập kỷ.
- Chỉ có thể rút tiền đã hết thời gian tạm giữ.
GETgetHoldBalanceĐang tạm giữ+
Sau khi nhận SMS, thu nhập được tạm giữ trong thời gian do nhà cung cấp quy định. Đến ngày đã định, số tiền tự động trở nên khả dụng để rút.
Các Parameters
| Các Parameter | loại | Mô tả |
|---|---|---|
api_key* | string | Khóa API cá nhân của người dùng. |
* Cần thông số. trong tất cả các yêu cầu cũng thông qua hành động=getHoldBalance.
Ví dụ yêu cầu
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)Câu trả lời
ACCESS_HOLD_BALANCE:34.50000001- SMScash · getHoldBalance · USD · 8
- Chỉ có thể rút tiền đã hết thời gian tạm giữ.
Mã phản hồi và lặp lại yêu cầu
Trong handler_api.php kết quả kinh doanh thường đến với HTTP 200. kiểm tra văn bản cơ thể. hướng dẫn và getSmsFull trả lại JSON nếu thành công; lỗi luôn là văn bản.
| Mã | HTTP | Nguyên nhân và bước tiếp theo |
|---|---|---|
TARIFF_NOT_CONFIGURED | 200 | Tỷ lệ chưa được đặtSố phân bổ sẽ bắt đầu một khi SMS phần thưởng được cấu hình. |
COUNTRY_BLOCKED | 200 | Số phân bổ cho đất nước này bị chặn.Chọn một quốc gia khác. |
BAD_SERVICE | 200 | Số phân bổ cho dịch vụ này bị chặn.Chọn một dịch vụ khác |
PROVIDER_NOT_READY | 200 | Số phân bổ tạm thời không sẵn dùngTải về các catalog API. |
BAD_KEY | 400 | Không api_key hoặc bức tính không hợp.Kiểm tra chìa khóa trong yêu cầu |
INVALID_API_KEY | 401 | Chìa khóa không rõ, hủy bỏ hoặc tài khoản bị vô hiệu hóa.Tạo một khóa API hợp lệ. |
BAD_COUNTRY | 400 | Đất nước đang thiếu hoặc không có số tích cực.Nhận ID từ getCountries. |
BAD_SESSION_DURATION | 400 | Số điện thoại được phát hành trong 20 phút chính xác.Đúng session_duration. |
BAD_REQUEST | 400 | Chất lượng thông số hoặc Idempotency-Key.Vui lòng sửa đổi yêu cầu của bạn. |
BAD_SERVICE / BAD_OPERATOR / INVALID_PROVIDER | 200 | Không biết hoặc bị chặn mục thư mục.Tải về các catalog API. |
BAD_NUMBER | 200 | Định dạng số không chính xácNhập số trong số. |
BAD_ACTION / BAD_STATUS | 200 | Lệnh, ID hoặc hoạt động không rõ.Kiểm tra các thiết lập. |
EMPTY_POOL | 200 | Hiện tại không có số điện thoại phù hợp.Lặp lại sau 10-30 giây hoặc thay đổi bộ lọc. |
NUMBER_IN_USE | 200 | Một số cụ thể được chiếm bởi một phiên hoạt động.Kết thúc phiên hoặc chọn số khác. |
NO_ACTIVATION | 200 | Số phiên hoặc số trước đó không thuộc về tài khoản của bạn.Kiểm tra ID và khóa |
SESSION_CLOSED / SMS_REQUIRED | 200 | Chuyển đổi nhà nước hiện chưa có sẵn.Kiểm tra tình trạng và khả năng truy cập của SMS. |
SCOPE_BLOCKED | 200 | Dịch vụ, quốc gia hoặc nhà cung cấp không được phép cho khóa.Cập nhật phạm vi của khóa API. |
IDEMPOTENCY_CONFLICT | 200 | Chìa khóa truy vấn này đã được liên kết với các thông số khác.Đối với một hoạt động mới, tạo lại khác Idempotency-Key. |
BAD_REF / SELF_REF | 400 | Mã phần mềm là không rõ, bị tắt, hoặc thuộc về người lao động.Nhấp vào mã của chủ sở hữu phần mềm. |
INTERNAL_ERROR | 500 | Lỗi máy chủ tạm thời hoặc lỗi nhà cung cấpLặp lại với một phận và cùng nhau Idempotency-Key. |
ALLOCATION_PENDING | 200 | Số phân bổ đã được tiến hành. Retry với cùng một Idempotency-Key.Số phân bổ đã được tiến hành. Retry với cùng một Idempotency-Key. |
ALLOCATION_UNCERTAIN | 200 | Kết quả phân bổ không được xác nhận. tự động rút lại bị vô hiệu hóa để tránh phân bổ số thứ hai.Kết quả phân bổ không được xác nhận. tự động rút lại bị vô hiệu hóa để tránh phân bổ số thứ hai. |
REST trả lại một đối tượng {"error":{"code":"…","message":"…"}} và các trạng thái HTTP thường xuyên 400/401/403/404/409/503.
{
"error": {
"code": "BAD_REQUEST",
"message": "Kiểm tra các trường yêu cầu.",
"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.Lời bài hát: REST FOR NEW INTEGRATION
Số tiền thuế USD được trả lại như các dây thập giá chính xác với 8 vị trí thập giá: 0.00300000 USD.
Tỷ lệ tiền tệ là USD. Các chương trình yêu cầu và đáp ứng có sẵn trong OpenAPI.
/api/v1/catalogDịch vụ và quốc gia/api/v1/tariffsSMS trả giá theo quốc gia/api/v1/offersTỷ lệ và phần thưởng/api/v1/servicesĐạo diễn/api/v1/countriesĐạo diễn/api/v1/operatorsĐạo diễn/api/v1/availability?country=1Số khả dụng/api/v1/activationsphiên mới/api/v1/activations/batch?ids=42,43Kiểm tra nhiều số/api/v1/activations200 phiên gần đây nhất: scope=history, waiting or all/api/v1/activations/{id}Cuộc họp và tin nhắn/api/v1/activations/{id}/sms?after_id=0&limit=100SMS mới với cursor/api/v1/activations/{id}/retryĐang chờ SMS/api/v1/activations/{id}/finishhoàn thành/api/v1/activations/{id}/cancelhủy/api/v1/activations/repeatSố lượt xem/api/v1/keysKhóa API/api/v1/keysTạo một chìa khóa/api/v1/keys/{id}Thay đổi tên hoặc chính sách/api/v1/keys/{id}Lời bài hát Revoke Key/api/v1/referralsMã tham khảo và lợi nhuận/api/v1/summaryTính cân bằng và tổng hợp/api/v1/balanceĐang tạm giữ/api/v1/ledgerlợi nhuận Ledger/api/v1/withdrawalsyêu cầu thanh toán/api/v1/withdrawalsTạo một yêu cầu/api/v1/statisticsTổng thống thống/api/v1/earnings/holdsTạm giữ thu nhậpChỉ nhận SMS mới
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": "Mã: 001234",
"sender": "Service",
"received_at": "2026-10-09T12:00:00Z"
}
],
"next_cursor": 101,
"has_more": false
}cứu next_cursor và đi qua nó như after_idNếu has_more=true, trang tiếp theo có thể được đọc ngay lập tức. giới hạn: 1–200• Các buổi và SMS Chỉ có sẵn cho chủ sở hữu.