ឯកសារ 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.កូនសោមិនត្រូវបានរក្សាទុកទេ។ ការពិនិត្យនេះមិនផ្ដល់លេខទេ។
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)
យក លេខ
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 វិនាទី ។ អ្នក អាច បោះបង់ ភ្លាមៗ ។
នៅ ក្នុង REST តែ មួយ Idempotency-Key ត្រូវ បាន ទាមទារ សម្រាប់ ការ ចែកចាយ លេខ ម្ដង ទៀត retry និង សំណើ បំផុត ។ វា ជា ជម្រើស ប៉ុន្តែ បាន ផ្ដល់ អនុសាសន៍ ក្នុង handler_api.php. ប្រើ កូនសោ ឡើង វិញ នៅពេល ព្យាយាម ព្យុះ សំណើ បណ្ដាញ ។ ប្រើ សោ ថ្មី សម្រាប់ ប្រតិបត្តិការ ថ្មី ។
វិសាលគមន៍ សោ API
អ្នក អាច កំណត់ សោ សម្រាប់ សេវា ប្រទេស និង អ្នក ផ្ដល់ ជាក់លាក់ ។ បញ្ជី ទទេ អនុញ្ញាត ឲ្យ ជម្រើស ដែល មាន ទាំងអស់ ។
{
"label": "កម្មវិធី របស់ ខ្ញុំ",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} ផ្លាស់ប្ដូរ ឈ្មោះ និង គោលការណ៍ ទាំងស្រុង ។ សម្ងាត់ ត្រូវ បាន បង្ហាញ តែ នៅពេល ដែល បាន បង្កើត ។
10% សរុប ។ 5% + 5% ជាមួយ កូដ កម្មវិធី ។
នៅពេល ផ្សាយ លេខ សូម ផ្ដល់ ref ម្ចាស់ របស់ កម្មវិធី ។ សំណើ ត្រូវ បាន អនុញ្ញាត ដោយ គ្រាប់ចុច ប្រតិបត្តិការ ។ កូដ គឺ នៅ ក្នុង ផ្នែក "កម្រិត ចម្លង" និង ក្នុង GET /api/v1/referrals → software_ref.
| សំណើ | អ្នក អញ្ជើញ | កម្មវិធី |
|---|---|---|
| ដោយ គ្មាន លេប | 10% | — |
| ជាមួយ Ref | 5% | 5% |
| ជាមួយ Ref គ្មាន ទិន្នន័យ | — | 5% |
វេទិកា បំផុត បូណូស ដោយ មិន បន្ថយ គ្រប់គ្រង របស់ អ្នកប្រើប្រាស់ ។ ម្ចាស់ ផ្នែក ទន់ និង refererr អាច ជា មនុស្ស ដូច គ្នា ។ អ្នក និពន្ធ មិន អាច ប្រើ កូដ ផ្ទាល់ ខ្លួន បាន ទេ ។
ព្រឹត្តិការណ៍ ត្រូវ បាន កំណត់ នៅពេល ដែល បាន បង្កើត សម័យ អាន SMS និង retry កុំ ផ្លាស់ប្ដូរ ពួកវា ។ ref ម្ដងទៀត សម្រាប់ សម័យ ធ្វើ ឡើងវិញ ថ្មី ។ ក្នុង ការ គណនា តារាង គ្រប់គ្រង នៃ USD 0.003 ផ្ដល់ USD 0.00015 នីមួយៗ ទៅកាន់ ម្ចាស់ ផ្នែក ទន់ និង ទិន្នន័យ ។ បូនស សរុប គឺ USD 0.00030.
ពាក្យ បញ្ជា API
11 XVBCវិធីសាស្ត្រ រចនាប័ទ្ម បន្ថែម របស់ អ្នក SMScash តុល្យភាព ។
GETgetNumberយក លេខ+
បង្កើត សម័យ និង រក្សាទុក លេខ ដែល មាន សម្រាប់ អ្នក និពន្ធ ។ អត្រា ការ សម្រាល ទុក្ខ និង អ្នក ទទួល ការ បញ្ជូន ត្រូវ បាន ស្ថិតស្ថានភាព នៅ ពេល SMS ដែល មាន កូដ មក ដល់ ។
ប៉ារ៉ាម៉ែត្រ
| ប៉ារ៉ាម៉ែត្រ | ប្រភេទ | សេចក្ដី ពិពណ៌នា |
|---|---|---|
api_key* | string | សោ API ផ្ទាល់ខ្លួនរបស់អ្នកប្រើប្រាស់។ |
service* | string | កូដ សេវា ដែល មាន ។ ចម្លើយ គឺ កំណត់ ទៅ ផ្ទៃ របស់ កូនសោ API ។ |
country* | integer | យក លេខ សម្គាល់ ពី getCountries ។ |
operator | string | យក លេខ សម្គាល់ ពី operators/getOperators (API) ។ operator=1 · any/0 |
session_duration | integer | សម័យ រង់ចាំ 20 នាទី ។ ដំណើរការ 20 ឬ បោះបង់ ប៉ារ៉ាម៉ែត្រ នេះ ។ |
with_operator | integer | 1 បន្ថែម ID របស់ប្រតិបត្តិករទៅក្នុងចម្លើយ; 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 ។
- កូនសោ របស់ សម័យ ដែល បាន លុប នៅ តែ ត្រូវ បាន ប្រើ ៖ ការ ចាក់ ការ ចែក ជាមួយ គ្រាប់ចុច នោះ ឡើង វិញ ត្រឡប់ SESION_CLOSED ហើយ មិន បោះបង់ លេខ ផ្សេងទៀត ទេ ។
- លទ្ធផល ចែកចាយ មិន បាន ផ្ទៀងផ្ទាត់ ភាព ត្រឹមត្រូវ ។ ការ ព្យាយាម ស្វ័យ ប្រវត្តិ ត្រូវ បាន បិទ ដើម្បី មិន ចាំបាច់ ការ ចែក ចាយ លេខ ទីពីរ ។
GETgetNumbersStatusពិនិត្យ មើល ដែល អាច ប្រើ បាន+
លេខ ទូរស័ព្ទ ដែល មាន ដោយ សេវា និង ប្រទេស ។
ប៉ារ៉ាម៉ែត្រ
| ប៉ារ៉ាម៉ែត្រ | ប្រភេទ | សេចក្ដី ពិពណ៌នា |
|---|---|---|
api_key* | string | សោ API ផ្ទាល់ខ្លួនរបស់អ្នកប្រើប្រាស់។ |
country* | integer | យក លេខ សម្គាល់ ពី 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 បច្ចុប្បន្ន មាន ន័យ ថា ជម្រើស ដោយ គ្មាន ប្រតិបត្តិការ ជាក់លាក់ ។
- អាច ប្រើ បាន ទាក់ទង ទៅ កាន់ ព័ត៌មាន សរុប របស់ អ្នក ផ្ដល់ ។ ឆានែល ដែល បាន ជ្រើស ត្រូវ បាន ពិនិត្យ នៅពេល ដែល ត្រូវ បាន ផ្តល់ ចំនួន ។
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 វិនាទី ។ ការ អាន សារ ម្ដង ទៀត មិន បង្កើត ការ សម្រេចចិត្ត ផ្សេងទៀត ទេ ។
- បន្ទាប់ ពី ព្យាយាម កូដ ចាស់ មិន ត្រូវ បាន ត្រឡប់ ៖ 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 បន្ថែម ID របស់ប្រតិបត្តិករទៅក្នុងចម្លើយ; 0 ឬមិនបញ្ជាក់ប៉ារ៉ាម៉ែត្រ នឹងត្រឡប់បីផ្នែក។ |
ref | string | កូដ សាធារណៈ របស់ ម្ចាស់ កម្មវិធី ៖ 5% សម្រាប់ គាត់ និង 5% សម្រាប់ អ្នក អញ្ជើញ ។ ដោយ គ្មាន ref - 10% ទៅ អ្នក អញ្ជើញ ។ |
operator | string | យក លេខ សម្គាល់ ពី 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 អនុញ្ញាត ឲ្យ ចំនួន ពី ប្រវត្តិ របស់ គណនី នេះ ឡើងវិញ ប៉ុណ្ណោះ ។ ប្រទេស ត្រូវ បាន កំណត់ សម្គាល់ ដោយ លេខ ។
- កូនសោ របស់ សម័យ ដែល បាន លុប នៅ តែ ត្រូវ បាន ប្រើ ៖ ការ ចាក់ ការ ចែក ជាមួយ គ្រាប់ចុច នោះ ឡើង វិញ ត្រឡប់ SESION_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- ទ្រង់ទ្រាយសារ ៖ ពេលវេលាcode/ text ។ សារ ច្រើន ត្រូវ បាន បំបែក ដោយ សញ្ញា ចំនួន ។
- SMS របស់ អត្ថបទ ផ្ទាល់ ខ្លួន អាច មាន សញ្ញា កញ្ចប់ និង របារ បញ្ឈរ ។ សម្រាប់ ការ ញែក ដែល ជឿ ទុកចិត្ត ប្រើ getSmsFull ។
GETgetServicesសេវាកម្ម+
កូដ សេវា ដែល មាន ។ ចម្លើយ គឺ កំណត់ ទៅ ផ្ទៃ របស់ កូនសោ API ។
ប៉ារ៉ាម៉ែត្រ
| ប៉ារ៉ាម៉ែត្រ | ប្រភេទ | សេចក្ដី ពិពណ៌នា |
|---|---|---|
api_key* | string | សោ API ផ្ទាល់ខ្លួនរបស់អ្នកប្រើប្រាស់។ |
country | integer | យក លេខ សម្គាល់ ពី 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 ID ឈ្មោះ និងរយៈពេលរក្សាទុកប្រាក់រង្វាន់។
ប៉ារ៉ាម៉ែត្រ
| ប៉ារ៉ាម៉ែត្រ | ប្រភេទ | សេចក្ដី ពិពណ៌នា |
|---|---|---|
api_key* | string | សោ API ផ្ទាល់ខ្លួនរបស់អ្នកប្រើប្រាស់។ |
country | integer | យក លេខ សម្គាល់ ពី getCountries ។ |
operator | string | យក លេខ សម្គាល់ ពី 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
}
}- យក លេខ សម្គាល់ ពី operators/getOperators (API) ។
GETgetRewardsចាំបាច់ សម្រាប់ SMS+
អត្រា អាស្រ័យ លើ ប្រទេស ។ ចំនួន តារាង ទាំងអស់ គឺ ជា SMS ដែល បាន ផ្ដល់ ។
ប៉ារ៉ាម៉ែត្រ
| ប៉ារ៉ាម៉ែត្រ | ប្រភេទ | សេចក្ដី ពិពណ៌នា |
|---|---|---|
api_key* | string | សោ API ផ្ទាល់ខ្លួនរបស់អ្នកប្រើប្រាស់។ |
country | integer | យក លេខ សម្គាល់ ពី getCountries ។ |
service | string | កូដ សេវា ដែល មាន ។ ចម្លើយ គឺ កំណត់ ទៅ ផ្ទៃ របស់ កូនសោ API ។ |
operator | string | យក លេខ សម្គាល់ ពី 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លទ្ធផល កិច្ចការ .php ជា ធម្មតា មក ជាមួយ HTTP 200. ពិនិត្យ មើល អត្ថបទ តួ ។ ថត និង getSmsFull ត្រឡប់ JSON ប្រសិន បើ ជោគជ័យ កំហុស ជានិច្ច ជា អត្ថបទ ។
| កូដ | HTTP | ហេតុផល និង ជំហាន បន្ទាប់ |
|---|---|---|
TARIFF_NOT_CONFIGURED | 200 | អត្រា មិន ត្រូវ បាន កំណត់ នៅ ឡើយ ទេការ ចែកចាយ ចំនួន នឹង ចាប់ផ្ដើម ម្ដង ការ កំណត់ រចនា សម្ព័ន្ធ ការ ផ្ដល់ អនុគមន៍ SMS ។ |
COUNTRY_BLOCKED | 200 | ការ ចែកចាយ លេខ សម្រាប់ ប្រទេស នេះ ត្រូវ បាន បញ្ឈប់ ។ជ្រើស ប្រទេស ផ្សេង ទៀត ។ |
BAD_SERVICE | 200 | ការ ចែកចាយ ចំនួន សម្រាប់ សេវា នេះ ត្រូវ បាន បញ្ឈប់ ។ជ្រើស សេវា ផ្សេង ទៀត ។ |
PROVIDER_NOT_READY | 200 | មិនមាន ការ ចែកចាយ លេខ បណ្ដោះអាសន្នធ្វើ ឲ្យ កាតាឡុក API ស្រស់ ។ |
BAD_KEY | 400 | គ្មាន api_key ឬ ទ្រង់ទ្រាយ មិន ត្រឹមត្រូវ ។ពិនិត្យ មើល សោ នៅ ក្នុង សំណើ ។ |
INVALID_API_KEY | 401 | គ្រាប់ ចុច មិន ស្គាល់ មិន ត្រឹមត្រូវ បាន ដោះស្រាយ ឬ គណនី ត្រូវ បាន បិទ ។បង្កើត សោ API ត្រឹមត្រូវ ។ |
BAD_COUNTRY | 400 | ប្រទេស បាត់ ឬ មិនមាន លេខ ចិត្ត ទេ ។យក លេខ សម្គាល់ ពី getCountries ។ |
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 | លទ្ធផល ចែកចាយ មិន បាន ផ្ទៀងផ្ទាត់ ភាព ត្រឹមត្រូវ ។ ការ ព្យាយាម ស្វ័យ ប្រវត្តិ ត្រូវ បាន បិទ ដើម្បី មិន ចាំបាច់ ការ ចែក ចាយ លេខ ទីពីរ ។លទ្ធផល ចែកចាយ មិន បាន ផ្ទៀងផ្ទាត់ ភាព ត្រឹមត្រូវ ។ ការ ព្យាយាម ស្វ័យ ប្រវត្តិ ត្រូវ បាន បិទ ដើម្បី មិន ចាំបាច់ ការ ចែក ចាយ លេខ ទីពីរ ។ |
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/tariffsអត្រា ពិបាក SMS តាម ប្រទេស/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 សម័យ ៖ គ្រប់គ្រង=history, wait 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/keysកូនសោ API/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 មាន តែ ម្ចាស់ ។