Pengenalan API
Nombor, mesej dan pendapatan, secara langsung daripada aplikasi anda.
Mulakan dengan satu permintaan
Mencipta kunci API dalam papan kekunci anda, dapatkan nombor dan semak untuk mesej setiap 20 saat.Pembayaran dikreditkan apabila SMS dengan kod tiba; membaca semula tidak menjejaskan keseimbangan anda.
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}'Alamat antara muka yang kompatibel alternatif: /handler_api.php. integrasi REST yang sedia ada terus berfungsi.
Pembina permintaan
Idempotency-Key: UUID · POST · 8–128
Pilih automatik: kod terbanyak dalam sejam terakhir, kemudian 24 jam. Tiada nombor: operator seterusnya.
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.Kunci tidak disimpan. Semakan ini tidak memperuntukkan nombor.
SeterusnyaSeterusnyaSeterusnyaIntegrasi
Perkhidmatan dan negara
Pilih perkhidmatan dan negara. pembayaran melalui SMS bergantung kepada negara.
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)
Dapatkan nombor
POST /api/v1/activations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Idempotency-Key: request-unique-001
{
"service": "go",
"country": 86
}Pilih automatik: kod terbanyak dalam sejam terakhir, kemudian 24 jam. Tiada nombor: operator seterusnya.
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: stringNombor ini sah selama 20 minit. SMS disemak setiap 20 saat. anda boleh membatalkan segera.
Semak beberapa nombor
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 messageBaki · Ditahan
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 — Tersedia; held_balance — Ditahan. USD · 8
Hanya dana yang telah tamat tempoh tahanan boleh dikeluarkan.
Klien sedia digunakan
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.phpKunci API peribadi pengguna.
Pilih perkhidmatan dan negara. pembayaran melalui SMS bergantung kepada negara.
| Kod yang | Penerangan |
|---|---|
getNumber / getNumberV2 | Dapatkan nombor |
getStatus / getStatusV2 | Dapatkan kod terkini |
setStatus / finishActivation / cancelActivation | Pengurusan sesi |
getPrices / getNumbersStatus | Periksa ketersediaan |
getRewards (SMScash) | Penghargaan SMS |
getServicesList / getServices | Perkhidmatan |
getCountries / getOperators | Perkhidmatan dan negara |
getActiveActivations | Sesi |
getBalance | Baki pengguna |
getHoldBalance (SMScash) | Ditahan |
cost = 0 USD · activationCost = 0 USDreward — Penghargaan 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.Nombor ini sah selama 20 minit. SMS disemak setiap 20 saat. anda boleh membatalkan segera.
Pengesahan dan penarikan
REST: tajuk Authorization: Bearer YOUR_API_KEY. Antara muka yang kompatibel : parameter api_key dan actionMenggunakan HTTPS
Untuk menguruskan kunci API, masukkan akaun anda.
Frekuensi permintaan API dan bilangan nombor telefon tidak terhad.Tidak ada kuota harian atau jam.
Nombor ini sah selama 20 minit. SMS disemak setiap 20 saat. anda boleh membatalkan segera.
Di samping itu, satu yang unik Idempotency-Key diperlukan untuk peruntukan nombor, peruntukan berulang, permintaan penarikan dan pembayaran. ia adalah opsional tetapi disyorkan dalam handler_api.php. Gunakan semula kunci apabila penarikan permintaan rangkaian; gunakan kunci baru untuk operasi baru.
API Key Scope
Anda boleh membatasi kunci kepada perkhidmatan tertentu, negara dan pembekal. senarai kosong membolehkan semua pilihan yang tersedia.
{
"label": "Perisian saya",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} Nama dan dasar berubah sepenuhnya. rahsia hanya ditunjukkan apabila dicipta.
10% dalam jumlah. 5% + 5% dengan kod perisian.
Apabila anda mengeluarkan nombor, sila berikan ref pemilik perisian. permintaan dibenarkan oleh kunci eksekutif. kod ini terdapat dalam seksyen "Rujukan" dan dalam GET /api/v1/referrals → software_ref.
| Permintaan | Jemputan | Perisian |
|---|---|---|
| Tiada ref | 10% | — |
| dengan ref | 5% | 5% |
| Dengan ref, tiada referrer | — | 5% |
Platform membayar bonus tanpa mengurangkan pendapatan pengguna. pemilik perisian dan penceramah boleh menjadi orang yang sama. pengguna tidak boleh menggunakan kod mereka sendiri.
Terma ditetapkan apabila sesi dicipta; membaca SMS dan penarikan tidak mengubah mereka. lulus ref lagi untuk sesi berulang baru. dalam pengiraan tarif, ganjaran pengguna USD 0.003 memberikan USD 0.00015 masing-masing kepada pemilik perisian dan referrer. bonus keseluruhan ialah USD 0.00030.
API Perintah
11 kaedah gaya XVBC ditambah keseimbangan SMScash anda.
GETgetNumberDapatkan nombor+
Mencipta sesi dan menyimpan nombor yang tersedia untuk pengguna. kadar ganjaran dan penerima rujukan ditetapkan pada peruntukan; ganjaran dikreditkan apabila SMS dengan kod tiba.
parameter
| parameter | Jenis | Penerangan |
|---|---|---|
api_key* | string | Kunci API peribadi pengguna. |
service* | string | Kod perkhidmatan yang tersedia. jawapan terhad kepada kawasan kunci API. |
country* | integer | Dapatkan ID daripada getCountries. |
operator | string | Dapatkan ID daripada operators/getOperators (API). operator=1 · any/0 |
session_duration | integer | Sesi berlangsung selama 20 minit. lulus 20 atau lupakan parameter ini. |
with_operator | integer | 1 menambah ID operator pada respons; 0 atau tanpa parameter mengembalikan tiga segmen. |
ref | string | Kod awam pemilik perisian: 5% untuk beliau dan 5% untuk tetamu. tanpa ref - 10% untuk tetamu. |
* Parameter yang diperlukan. dalam semua permintaan juga lulus tindakan=getNumber.
Permintaan contoh
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)Jawapan
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- Pilih automatik: kod terbanyak dalam sejam terakhir, kemudian 24 jam. Tiada nombor: operator seterusnya.
- ♫ Pass Idempotency-Keyʹ: the same request with theself key return the previous session. Change the parameters calls IDEMPOTENCY_CONFLICT.
- Negara nombor tanpa kolam memberikan EMPTY_POOL; format negara yang salah ialah BAD_COUNTRY.
- Kunci sesi yang dipadamkan masih digunakan: memainkan semula peruntukan dengan kunci itu mengembalikan SESSION_CLOSED dan tidak mengeluarkan nombor lain.
- Hasil peruntukan tidak disahkan. pengeluaran automatik tidak dibenarkan untuk mengelakkan peruntukan nombor kedua.
GETgetNumbersStatusPeriksa ketersediaan+
Nombor telefon yang tersedia mengikut perkhidmatan dan negara.
parameter
| parameter | Jenis | Penerangan |
|---|---|---|
api_key* | string | Kunci API peribadi pengguna. |
country* | integer | Dapatkan ID daripada getCountries. |
* Parameter yang diperlukan. dalam semua permintaan juga lulus tindakan=getNumbersStatus.
Permintaan contoh
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())Jawapan
{
"go_0": 0
}- _0 suffix ialah pilihan tanpa operator tertentu.
- Ketersediaan merujuk kepada keseluruhan kolam pembekal. saluran yang dipilih disemak apabila nombor diperuntukkan.
GETgetStatusDapatkan kod terkini+
Mudah meminta status sesi dan kod SMS terakhir.Zero terkemuka dalam kod disimpan.
parameter
| parameter | Jenis | Penerangan |
|---|---|---|
api_key* | string | Kunci API peribadi pengguna. |
id* | integer | ID sesi anda, diterima apabila nombor itu dikeluarkan. |
* Parameter yang diperlukan. dalam semua permintaan juga lulus tindakan=getStatus.
Permintaan contoh
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)Jawapan
STATUS_WAIT_CODESTATUS_OK:001234STATUS_CANCELNO_ACTIVATION- Poll setiap 20 Membaca mesej lagi tidak akan menghasilkan pembayaran lain.
- Selepas penarikan kod lama tidak dikembalikan: getStatus menunggu untuk SMS seterusnya.
- Selepas nombor tanpa SMS telah dihapuskan , getStatus dan getSms Kembali STATUS_CANCEL; getSmsFull mengembalikan status tertutup, telefon kosong dan sms senarai yang REST /activations/{id} dan /sms Kembali 404 NO_ACTIVATION.
GETsetStatusPengurusan sesi+
Tamat, dibatalkan atau dikembalikan menunggu SMS. sesi tamat tempoh kekal sama.
parameter
| parameter | Jenis | Penerangan |
|---|---|---|
api_key* | string | Kunci API peribadi pengguna. |
id* | integer | ID sesi anda, diterima apabila nombor itu dikeluarkan. |
status* | integer | 3 - menunggu kod seterusnya tanpa melanjutkan sesi; 6 - selesai selepas SMS; 8 - membatalkan segera. |
* Parameter yang diperlukan. dalam semua permintaan juga lulus tindakan=setStatus.
Permintaan contoh
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)Jawapan
ACCESS_RETRY_GETACCESS_ACTIVATIONACCESS_CANCEL- Kembali menunggu kod seterusnya dalam tempoh 20 minit asal. tempoh keluar dan tempoh tamat tempoh tidak berubah.
- untuk status =3 Penggunaan Idempotency-Key: mengulangi permintaan tidak akan mengeset semula kod baru yang telah diterima. SMS masih boleh didapati.
- Pembatalan tidak menghapuskan ganjaran yang telah diperolehi.
- Hanya nombor dengan kod SMS disimpan dalam sejarah. nombor yang dibatalkan dan tamat tempoh tanpa kod dipadamkan.
GETgetRepeatNumberMenggambarkan nombor yang sama lagi+
Buka sesi baru dengan nombor tertentu daripada sejarah anda. anda boleh memilih perkhidmatan lain yang tersedia di negara yang sama.
parameter
| parameter | Jenis | Penerangan |
|---|---|---|
api_key* | string | Kunci API peribadi pengguna. |
number* | string | Hanya nombor dan pilihan pemimpin + dibenarkan. |
service* | string | Kod perkhidmatan yang tersedia. jawapan terhad kepada kawasan kunci API. |
session_duration | integer | Sesi berlangsung selama 20 minit. lulus 20 atau lupakan parameter ini. |
with_operator | integer | 1 menambah ID operator pada respons; 0 atau tanpa parameter mengembalikan tiga segmen. |
ref | string | Kod awam pemilik perisian: 5% untuk beliau dan 5% untuk tetamu. tanpa ref - 10% untuk tetamu. |
operator | string | Dapatkan ID daripada operators/getOperators (API). operator=1 · any/0 |
* Parameter yang diperlukan. dalam semua permintaan juga lulus tindakan=getRepeatNumber.
Permintaan contoh
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)Jawapan
ACCESS_NUMBER:43:380670000000NUMBER_IN_USE- Pertama, tamat atau membatalkan sesi semasa anda.Jika nombor sibuk, pengeluaran semula tidak dijalankan.
- Sesi baru menerima ID baru dan tarif semasa. SMS lama tidak disalin ke dalamnya. ref ditetapkan semula.
- SMScash membolehkan mengulangi hanya nombor daripada sejarah akaun ini. negara ini dikenalpasti oleh nombor.
- Kunci sesi yang dipadamkan masih digunakan: memainkan semula peruntukan dengan kunci itu mengembalikan SESSION_CLOSED dan tidak mengeluarkan nombor lain.
GETgetSmsFullDapatkan SMS sebagai JSON+
Sejarah yang dibina semua mesej dengan ID, penghantar, kod, teks dan negara, perkhidmatan dan data pembekal.
parameter
| parameter | Jenis | Penerangan |
|---|---|---|
api_key* | string | Kunci API peribadi pengguna. |
id* | integer | ID sesi anda, diterima apabila nombor itu dikeluarkan. |
* Parameter yang diperlukan. dalam semua permintaan juga lulus tindakan=getSmsFull.
Permintaan contoh
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())Jawapan
{
"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"
}- Format kegemaran untuk integrasi. ingat sms[].id untuk memproses mesej baru sahaja.
- Status nombor SMScash: 1 - aktif, 6 - selesai, 8 - dibatalkan atau tamat tempoh. status_name membezakan antara menunggu, menerima, selesai, dibatalkan, tamat tempoh.
- Kod yang diterima kekal tersedia selepas sesi ditutup. untuk volum yang besar, gunakan REST /activations/{id}/sms dengan after_id.
- Selepas nombor tanpa SMS telah dihapuskan , getStatus dan getSms Kembali STATUS_CANCEL; getSmsFull mengembalikan status tertutup, telefon kosong dan sms senarai yang REST /activations/{id} dan /sms Kembali 404 NO_ACTIVATION.
GETgetSmsDapatkan SMS sebagai string teks+
Mengembalikan sejarah SMS keseluruhan dalam format string untuk pelanggan sedia ada.
parameter
| parameter | Jenis | Penerangan |
|---|---|---|
api_key* | string | Kunci API peribadi pengguna. |
id* | integer | ID sesi anda, diterima apabila nombor itu dikeluarkan. |
* Parameter yang diperlukan. dalam semua permintaan juga lulus tindakan=getSms.
Permintaan contoh
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)Jawapan
STATUS_OK:2026-10-09T12:00:00Z|001234|Код подтверждения: 001234STATUS_WAIT_CODESTATUS_CANCEL- Format mesej: masa dan kod dan teks. beberapa mesej dipisahkan oleh lajur.
- SMS teks itu sendiri boleh mengandungi kolom dan bar vertikal. untuk pertukaran yang boleh dipercayai, gunakan getSmsFull.
GETgetServicesPerkhidmatan+
Kod perkhidmatan yang tersedia. jawapan terhad kepada kawasan kunci API.
parameter
| parameter | Jenis | Penerangan |
|---|---|---|
api_key* | string | Kunci API peribadi pengguna. |
country | integer | Dapatkan ID daripada getCountries. |
* Parameter yang diperlukan. dalam semua permintaan juga lulus tindakan=getServices.
Permintaan contoh
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())Jawapan
{
"go": {
"name": "Google",
"code": "go"
}
}- Direktori perkhidmatan dibahagikan di seluruh pembekal. ketersediaan nombor disemak secara berasingan.
GETgetCountriesNegara+
ID, nama dan kod panggilan untuk negara-negara dalam saluran yang dipilih.
parameter
| parameter | Jenis | Penerangan |
|---|---|---|
api_key* | string | Kunci API peribadi pengguna. |
* Parameter yang diperlukan. dalam semua permintaan juga lulus tindakan=getCountries.
Permintaan contoh
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())Jawapan
{
"86": {
"id": 86,
"name": "Italy",
"phone_code": "39"
}
}GETgetOperatorsPengendali+
Operator tersedia: ID API, nama dan tempoh penahanan ganjaran.
parameter
| parameter | Jenis | Penerangan |
|---|---|---|
api_key* | string | Kunci API peribadi pengguna. |
country | integer | Dapatkan ID daripada getCountries. |
operator | string | Dapatkan ID daripada operators/getOperators (API). operator=1 · any/0 |
* Parameter yang diperlukan. dalam semua permintaan juga lulus tindakan=getOperators.
Permintaan contoh
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())Jawapan
{
"1": {
"id": 1,
"provider_id": 1,
"operator": 1,
"name": "Оператор 1",
"earnings_hold_days": 45
}
}- Dapatkan ID daripada operators/getOperators (API).
GETgetRewardsPenghargaan SMS+
Harga bergantung kepada negara. semua jumlah jadual adalah per SMS berbayar.
parameter
| parameter | Jenis | Penerangan |
|---|---|---|
api_key* | string | Kunci API peribadi pengguna. |
country | integer | Dapatkan ID daripada getCountries. |
service | string | Kod perkhidmatan yang tersedia. jawapan terhad kepada kawasan kunci API. |
operator | string | Dapatkan ID daripada operators/getOperators (API). operator=1 · any/0 |
* Parameter yang diperlukan. dalam semua permintaan juga lulus tindakan=getRewards.
Permintaan contoh
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())Jawapan
{
"59": {
"vi": {
"1": "0.01000000",
"3": "0.00500000"
}
}
}{}- Jumlah tarif USD dikembalikan sebagai garis dekimal yang tepat dengan 8 tempat dekimal:
- Pembekal yang dibenarkan boleh didapati pada kunci anda.
- country ID → service code → operator ID → reward (USD)
GETgetBalanceBaki pengguna+
Tambahan SMScash: keseimbangan yang tersedia mengambil kira akrual, bonus rujukan dan permintaan pembayaran.
parameter
| parameter | Jenis | Penerangan |
|---|---|---|
api_key* | string | Kunci API peribadi pengguna. |
* Parameter yang diperlukan. dalam semua permintaan juga lulus tindakan=getBalance.
Permintaan contoh
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)Jawapan
ACCESS_BALANCE:0.00- getBalance mengembalikan keseimbangan USD yang tersedia dengan sehingga 8 tempat sepuluh.
- Hanya dana yang telah tamat tempoh tahanan boleh dikeluarkan.
GETgetHoldBalanceDitahan+
Selepas SMS diterima, pendapatan ditahan selama tempoh yang ditetapkan oleh pembekal. Pada tarikh yang ditetapkan, amaun tersebut tersedia secara automatik untuk pengeluaran.
parameter
| parameter | Jenis | Penerangan |
|---|---|---|
api_key* | string | Kunci API peribadi pengguna. |
* Parameter yang diperlukan. dalam semua permintaan juga lulus tindakan=getHoldBalance.
Permintaan contoh
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)Jawapan
ACCESS_HOLD_BALANCE:34.50000001- SMScash · getHoldBalance · USD · 8
- Hanya dana yang telah tamat tempoh tahanan boleh dikeluarkan.
Kod jawapan dan permintaan berulang
Dalam handler_api.php hasil perniagaan biasanya datang dengan HTTP 200. semak teks badan. direktori dan getSmsFull kembali JSON jika berjaya; kesilapan sentiasa teks.
| Kod yang | HTTP | Penyebab dan Langkah Seterusnya |
|---|---|---|
TARIFF_NOT_CONFIGURED | 200 | Kadar belum ditetapkanNombor peruntukan akan bermula sebaik sahaja SMS ganjaran dikonfigurasi. |
COUNTRY_BLOCKED | 200 | Nombor peruntukan untuk negara ini telah disekat.Pilih negara lain. |
BAD_SERVICE | 200 | Nombor peruntukan untuk perkhidmatan ini disekat.Pilih perkhidmatan lain. |
PROVIDER_NOT_READY | 200 | Jumlah pengeluaran tidak boleh diakses sementaraMembersihkan katalog API. |
BAD_KEY | 400 | ± No api_key ë format invalid.Periksa kunci dalam permintaan. |
INVALID_API_KEY | 401 | Kunci tidak diketahui, ditarik balik atau akaun disekat.Mencipta kunci API yang sah. |
BAD_COUNTRY | 400 | Negara ini kekurangan atau tidak nombor positif.Dapatkan ID daripada getCountries. |
BAD_SESSION_DURATION | 400 | Nombor telefon dikeluarkan untuk 20 minit.Korekt ± Korrekt session_duration. |
BAD_REQUEST | 400 | ë invalid parameter or Idempotency-Key.Sila perbaiki permintaan anda. |
BAD_SERVICE / BAD_OPERATOR / INVALID_PROVIDER | 200 | item direktori yang tidak diketahui atau disabiliti.Membersihkan katalog API. |
BAD_NUMBER | 200 | Format nombor yang tidak betul.Masukkan nombor dalam digit. |
BAD_ACTION / BAD_STATUS | 200 | Perintah, ID atau operasi yang tidak diketahui.Periksa seting yang ada. |
EMPTY_POOL | 200 | Tiada nombor telefon yang sesuai kini boleh didapati.Kembali selepas 10-30 sekejap atau mengubah filter. |
NUMBER_IN_USE | 200 | Nombor tertentu diduduki oleh sesi aktif.Menamatkan sesi anda atau pilih nombor lain. |
NO_ACTIVATION | 200 | Sesi atau nombor terdahulu tidak termasuk dalam akaun anda.Periksa ID dan kunci. |
SESSION_CLOSED / SMS_REQUIRED | 200 | Peralihan negara tidak tersedia pada masa ini.Semak keadaan dan ketersediaan SMS. |
SCOPE_BLOCKED | 200 | Perkhidmatan, negara, atau pembekal tidak dibenarkan untuk kunci.Meningkatkan jangkauan kunci API. |
IDEMPOTENCY_CONFLICT | 200 | Kunci pertanyaan ini sudah dikaitkan dengan parameter lain.For a new operation, create other Idempotency-Key. |
BAD_REF / SELF_REF | 400 | Kod perisian tidak diketahui, disabiliti, atau milik pengguna itu sendiri.Sila rujuk kod pemilik perisian. |
INTERNAL_ERROR | 500 | Kesilapan pelayan sementara atau pembekal.Repetition with a tard and the same Idempotency-Key. |
ALLOCATION_PENDING | 200 | ♫ Number allocation is already in progress. Restart with the same Idempotency-Key.♫ Number allocation is already in progress. Restart with the same Idempotency-Key. |
ALLOCATION_UNCERTAIN | 200 | Hasil peruntukan tidak disahkan. pengeluaran automatik tidak dibenarkan untuk mengelakkan peruntukan nombor kedua.Hasil peruntukan tidak disahkan. pengeluaran automatik tidak dibenarkan untuk mengelakkan peruntukan nombor kedua. |
REST mengembalikan objek {"error":{"code":"…","message":"…"}} dan status HTTP biasa 400/401/403/404/409/503.
{
"error": {
"code": "BAD_REQUEST",
"message": "Periksa medan permintaan.",
"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.SeterusnyaSeterusnyaSeterusnyaIntegrasi
Jumlah tarif USD dikembalikan sebagai garis dekimal yang tepat dengan 8 tempat dekimal: 0.00300000 USD.
Mata wang keseimbangan ialah USD. skema permintaan dan tindak balas boleh didapati di OpenAPI.
/api/v1/catalogPerkhidmatan dan negara/api/v1/tariffsSMS recompense rates per Country/api/v1/offersHarga dan ganjaran/api/v1/servicesPengarah/api/v1/countriesPengarah/api/v1/operatorsPengarah/api/v1/availability?country=1Nombor ketersediaan/api/v1/activationsSesi baru/api/v1/activations/batch?ids=42,43Semak beberapa nombor/api/v1/activations200 sesi terakhir: scope = sejarah, menunggu atau semua/api/v1/activations/{id}Mesej dan mesej/api/v1/activations/{id}/sms?after_id=0&limit=100SMS dengan Cursor/api/v1/activations/{id}/retryMenunggu SMS/api/v1/activations/{id}/finishPenutupan/api/v1/activations/{id}/cancelPembatalan/api/v1/activations/repeatNombor pengembalian/api/v1/keysAPI Kunci/api/v1/keysMencipta kunci/api/v1/keys/{id}Perubahan nama atau dasar/api/v1/keys/{id}Menarik kunci/api/v1/referralsKod rujukan dan pendapatan/api/v1/summaryKeseimbangan dan ringkasan/api/v1/balanceDitahan/api/v1/ledgerPenghasilan Ledger/api/v1/withdrawalsPermohonan Pembayaran/api/v1/withdrawalsMencipta Permintaan/api/v1/statisticsStatistik Keseluruhan/api/v1/earnings/holdsTahanan pendapatanHanya menerima SMS baru sahaja
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": "Kod yang : 001234",
"sender": "Service",
"received_at": "2026-10-09T12:00:00Z"
}
],
"next_cursor": 101,
"has_more": false
}Save next_cursor × transfere it as after_idʹ. If has_more=true♫ , la next page puede read immediately. limite: 1–200ë . sessions and SMS disponible only for the proprietaire.