Documentare API
Începeți cu o singură cerere
Creați o cheie API în panou, obțineți un număr și verificați mesaje la fiecare 10 de secunde.Payment este creditat atunci când vine un SMS cu un cod; citirea din nou nu afectează echilibrul.
https://smscash.org/api/v1https://smscash.org/stubs/handler_api.phpcurl --get 'https://smscash.org/stubs/handler_api.php' \
--data-urlencode 'api_key=YOUR_API_KEY' \
--data-urlencode 'action=getNumber' \
--data-urlencode 'service=go' \
--data-urlencode 'country=86'Adresa alternativă a interfeței compatibile: /handler_api.php. Integrările existente REST continuă să funcționeze.
Generator de cereri
https://smscash.org/stubs/handler_api.phpcurl --max-time 15 --fail-with-body 'https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1'package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
endpoint, err := url.Parse("https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1")
if err != nil { panic(err) }
query := endpoint.Query()
query.Set("api_key", os.Getenv("SMSCASH_API_KEY"))
endpoint.RawQuery = query.Encode()
req, err := http.NewRequest("GET", endpoint.String(), nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second, CheckRedirect: func(_ *http.Request, _ []*http.Request) error { return http.ErrUseLastResponse }}
res, err := client.Do(req)
if err != nil { panic(err) }
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil { panic(err) }
fmt.Println(res.StatusCode, string(body))
}// Node.js 18+: set SMSCASH_API_KEY in your environment.
const url = new URL("https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1");
url.searchParams.set("api_key", process.env.SMSCASH_API_KEY);
const response = await fetch(url, {
method: 'GET',
signal: AbortSignal.timeout(15000),
redirect: 'error',
});
const result = await response.text();
console.log(response.status, result);
// SMS codes are strings: keep leading zeros. Never repeat issuance automatically.import json
import os
import urllib.error
import urllib.parse
import urllib.request
class NoRedirect(urllib.request.HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
return None
url = "https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1"
parts = urllib.parse.urlsplit(url)
params = dict(urllib.parse.parse_qsl(parts.query))
params["api_key"] = os.environ["SMSCASH_API_KEY"]
url = urllib.parse.urlunsplit(parts._replace(query=urllib.parse.urlencode(params)))
request = urllib.request.Request(url, method='GET')
try:
with urllib.request.build_opener(NoRedirect).open(request, timeout=15) as response:
result = response.read().decode("utf-8")
print(response.status, result)
except urllib.error.HTTPError as error:
print(error.code, error.read().decode('utf-8'))
raise
# No automatic retries; SMS codes remain strings.Cheia nu este salvată. Această verificare nu alocă numere.
Rămâne pentru noi integrări
Servicii și țări
Alegeti un serviciu si tara.Plaza prin SMS depinde de tara.
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)
Obțineți un număr
GET /stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86Selectare automată: un operator disponibil ales aleatoriu.
ACCESS_NUMBER: session ID · phone number
service + country · session_duration: 20
ref: software owner code (optional)
operator: public ID (e.g. 1) or comma-separated IDs (e.g. "1,3")
optional · omitted/any/0: random eligible provider
country: integer · service: string · SMS code: stringNumărul este valabil timp de 20 minute. SMS este verificat la fiecare 10 de secunde. puteți anula imediat.
Verifică mai multe numere
GET /api/v1/activations/batch?ids=42,43
Authorization: Bearer YOUR_API_KEY{
"rows": [
{
"id": 42,
"found": true,
"phone": "12025550123",
"status": "received",
"service": "go",
"country_id": 86,
"provider_id": 1,
"operator": 1,
"expires_at": "2026-10-10T12:15:00Z",
"sms_count": 1,
"code": "001234",
"last_sms": {
"id": 101,
"code": "001234",
"sender": "Service",
"text": "Code: 001234",
"received_at": "2026-10-10T12:01:00Z"
}
},
{
"id": 43,
"found": false,
"error": {
"code": "NO_ACTIVATION",
"message": "Session not found."
}
}
],
"as_of": "2026-10-10T12:01:00Z",
"poll_interval_seconds": 10
}ids: 1–100 positive session IDs, separated by commas
Input order preserved · duplicates removed
Foreign, unavailable or out-of-scope IDs: found=false
Read only · no supplier requests · last_sms is the latest messageSold · În așteptare
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 — Disponibil; held_balance — În așteptare. USD · 8
Pot fi retrase doar fondurile a căror perioadă de reținere s-a încheiat.
Clienți gata de utilizare
import {SmScash, SmScashError} from './smscash.mjs';
const api = new SmScash(process.env.SMSCASH_API_KEY);
const catalog = await api.catalog({service: 'go', country: 86});
console.log(catalog.rows);
const messages = await api.sms(42, {afterId: 0});
console.log(messages.sms);
const statuses = await api.batch([42]);
const held = await api.holdBalance();
console.log(held); // Exact USD stringimport os
from smscash import SmScash, SmScashError
api = SmScash(os.environ['SMSCASH_API_KEY'])
catalog = api.catalog(service='go', country=86)
print(catalog['rows'])
messages = api.sms(42, after_id=0)
print(messages['sms'])
statuses = api.batch([42])
held = api.hold_balance()
print(held) # Exact USD stringme() · balance() · holdBalance()/hold_balance() · catalog() · activation() · sms() · batch()
setStatus(id, "cancel") / set_status(id, "cancel")
Timeout: 15 s · no dependencies · no automatic retries
Error: code · status · hint · requestId/request_id · retryable
ALLOCATION_UNCERTAIN: contact support with request_id; never retry automatically.SMS-Activate / HeroSMS
https://smscash.org/sms-activate/stubs/handler_api.phphttps://smscash.org/hero-sms/stubs/handler_api.phpCheia API personală a utilizatorului.
Alegeti un serviciu si tara.Plaza prin SMS depinde de tara.
| Codul | Descriere |
|---|---|
getNumber / getNumberV2 | Obțineți un număr |
getStatus / getStatusV2 | Obțineți cel mai recent cod |
setStatus / finishActivation / cancelActivation | Sesiune de management |
getPrices / getNumbersStatus | Verifică disponibilitatea |
getRewards (SMScash) | Recomandări pentru SMS |
getServicesList / getServices | Servicii |
getCountries / getOperators | Servicii și țări |
getActiveActivations | Sesiuni |
getBalance | Soldul utilizatorului |
getHoldBalance (SMScash) | În așteptare |
cost = 0 USD · activationCost = 0 USDreward — Recomandări pentru SMS
curl --get 'https://smscash.org/hero-sms/stubs/handler_api.php' \
--data-urlencode 'api_key=YOUR_API_KEY' \
--data-urlencode 'action=getNumberV2' \
--data-urlencode 'service=go' \
--data-urlencode 'country=86'{
"activationId": "42",
"phoneNumber": "393331234567",
"activationCost": 0,
"currency": 840,
"countryCode": 86,
"canGetAnotherSms": true,
"activationTime": "2026-10-11T12:00:00Z",
"activationEndTime": "2026-10-11T12:15:00Z",
"reward": "0.00300000"
}GET or POST application/x-www-form-urlencoded
api_key · action · service · country · ref (optional)
setStatus: 1 → ACCESS_READY · 3 → ACCESS_RETRY_GET
6 → ACCESS_ACTIVATION · 8 → ACCESS_CANCEL
getStatus: STATUS_WAIT_CODE · STATUS_OK:001234 · STATUS_CANCEL
getStatusV2: {"verificationType":1,"sms":null,"call":null}
getServicesList: {"status":"success","services":[{"code":"go","name":"Google"}]}
getCountries: {"86":{"id":86,"eng":"Italy","visible":1,"retry":1,"rent":0}}
getPrices: {"86":{"go":{"cost":0,"count":12,"reward":"0.00300000","currency":"USD"}}}
getRewards: {"59":{"vi":{"1":"0.01000000"}}}
getRewards filters: country · service · operator (optional, e.g. 1,3); any/0: all permitted providers
getActiveActivations: start=0 · limit=1–100 · activeActivations / data
Business/key errors: HTTP 200 + plain text · server errors: HTTP 500
Availability: actual supplier pool, shared cache up to 20 s; not a reservation
No automatic retries after a transport error or ALLOCATION_UNCERTAIN.
Unsupported: rent · calls · forwarding · multiple services per number · prolong
Unsupported options return BAD_REQUEST; unsupported actions return BAD_ACTION.
SMScash keys and country/service codes; configure this base URL in your software.Numărul este valabil timp de 20 minute. SMS este verificat la fiecare 10 de secunde. puteți anula imediat.
Autentificare și retragere
REST: Titlu Authorization: Bearer YOUR_API_KEY. Interfață compatibilă: Parametrii api_key şi actionUtilizarea HTTPS.
Pentru a gestiona cheile API, introduceți contul.
Frecvența de cerere a API și numărul de numere de telefon sunt nelimitat. nu există cote zilnice sau orare.
Numărul este valabil timp de 20 minute. SMS este verificat la fiecare 10 de secunde. puteți anula imediat.
API-ul cu scară
Puteți limita o cheie la servicii specifice, țări și furnizori. liste goale permit toate opțiunile disponibile.
{
"label": "Software-ul meu",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} Schimbarea completă a numelui și a politicii. secretul este arătat numai atunci când este creat.
10% în total. 5% + 5% cu cod software.
Când emiteți un număr, vă rugăm să furnizați ref proprietarul software-ului. cererea este autorizată de cheia utilizatorului. codul este în secțiunea "Referințe" și în GET /api/v1/referrals → software_ref.
| Cerere | Invitaţi | Software-ul |
|---|---|---|
| Fără ref | 10% | — |
| Cu ref | 5% | 5% |
| Cu ref, fără referitor | — | 5% |
Platforma plătește bonusul fără a reduce câștigurile utilizatorului. proprietarul software și referitorul pot fi aceeași persoană. utilizatorul nu poate folosi propriul cod.
Termenele sunt fixate atunci când se creează o sesiune; citirea SMS și retragerea nu le schimbă. Pass ref din nou pentru o nouă sesiune repetată. În calculul tarifelor, o recompensă a utilizatorului de USD 0.003 acordă USD 0.00015 fiecare proprietarului software și referitorului. Bonusul total este USD 0.00030.
Comandă API
11 metode de stil XVBC plus echilibrul dvs. SMScash.
GETgetNumberObțineți un număr+
Creează o sesiune și rezervă un număr disponibil pentru utilizator. rata de recompensă și primitorii de referință sunt fixate la alocare; recompensele sunt creditate atunci când vine un SMS cu un cod.
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
service* | string | Coduri de serviciu disponibile.Răspunsul este limitat la zona cheii API. |
country* | integer | Luați ID-ul de la getCountries. |
operator | string | Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3. operator=1 · operator=1,3 · any/0 |
session_duration | integer | Sesiunea durează 20 minute. trece 20 sau omite acest parametru. |
with_operator | integer | 1 adaugă ID-ul operatorului în răspuns; 0 sau omiterea parametrului returnează trei segmente. |
ref | string | Публичный код владельца софта: 5% ему и 5% пригласившему. Без ref — 10% пригласившему. Неизвестный, отключённый, некорректный или собственный ref игнорируется: запрос продолжается без бонуса владельцу софта. Действующие коды и прежние условия уже выданных сессий сохраняются. |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =getNumber.
Cerere de exemplu
curl 'https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1");
const result = await response.text();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1",
timeout=15,
)
print(response.status_code, response.text)Răspunsuri
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- Selectare automată: un operator disponibil ales aleatoriu.
- Un stat numeric fără o piscină oferă EMPTY_POOL; formatul de țară greșit este BAD_COUNTRY.
- Cheia unei sesiuni șterse rămâne utilizată: replayarea alocării cu acea cheie returnează SESSION_CLOSED și nu emite un alt număr.
- Rezultatul alocării nu este confirmat. retragerea automată este disabilită pentru a evita alocarea unui număr al doilea.
GETgetNumbersStatusVerifică disponibilitatea+
Numere de telefon disponibile în funcție de serviciu și țară.
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
country* | integer | Luați ID-ul de la getCountries. |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =getNumbersStatus.
Cerere de exemplu
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())Răspunsuri
{
"go_0": 0
}- Sufixul _0 înseamnă o alegere fără un operator specific.
- Disponibilitatea se referă la piscina generală a furnizorului. canalul selectat este verificat atunci când este alocat un număr.
GETgetStatusObțineți cel mai recent cod+
Solicitarea ușoară pentru statutul sesiunii și ultimul cod SMS. Zero-urile de conducere din cod sunt păstrate.
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
id* | integer | ID-ul sesiunii, primit atunci când a fost emis numărul. |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =getStatus.
Cerere de exemplu
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)Răspunsuri
STATUS_WAIT_CODESTATUS_OK:001234STATUS_CANCELNO_ACTIVATION- Poll fiecare 20 Citirea unui mesaj din nou nu creează o altă plată.
- După retragere, vechiul cod nu este returnat: getStatus aşteaptă următorul SMS.
- După un număr fără SMS este eliminată, getStatus şi getSms Întoarcerea STATUS_CANCEL; getSmsFull Întoarce un telefon gol, un telefon gol și un telefon gol. sms Lista de REST /activations/{id} şi /sms Întoarcerea 404 NO_ACTIVATION.
GETsetStatusSesiune de management+
Se termină, se anulează sau se reînnoiește așteptarea pentru SMS.
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
id* | integer | ID-ul sesiunii, primit atunci când a fost emis numărul. |
status* | integer | 3 – aşteptaţi pentru următorul cod fără a prelungi sesiunea; 6 – terminarea după SMS; 8 – anularea imediat. |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =setStatus.
Cerere de exemplu
curl 'https://smscash.org/stubs/handler_api.php?action=setStatus&api_key=YOUR_API_KEY&id=42&status=3'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=setStatus&api_key=YOUR_API_KEY&id=42&status=3", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=setStatus&api_key=YOUR_API_KEY&id=42&status=3");
const result = await response.text();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=setStatus&api_key=YOUR_API_KEY&id=42&status=3",
timeout=15,
)
print(response.status_code, response.text)Răspunsuri
ACCESS_RETRY_GETACCESS_ACTIVATIONACCESS_CANCEL- Retrierea așteaptă următorul cod în termen de 20 minute. data de expirare și timpul de expirare nu se schimbă.
- Anularea nu îndepărtează recompensele deja câștigate.
- Numărul cu un cod SMS este păstrat în istorie; numărul anulat și expirat fără cod este șters.
GETgetRepeatNumberÎncă o dată același număr+
Deschideți o nouă sesiune cu un număr specific din istoria dvs. Puteți selecta un alt serviciu disponibil în aceeași țară.
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
number* | string | Numărul dvs. vechi. numai numere și un lider + opțional sunt permise. |
service* | string | Coduri de serviciu disponibile.Răspunsul este limitat la zona cheii API. |
session_duration | integer | Sesiunea durează 20 minute. trece 20 sau omite acest parametru. |
with_operator | integer | 1 adaugă ID-ul operatorului în răspuns; 0 sau omiterea parametrului returnează trei segmente. |
ref | string | Публичный код владельца софта: 5% ему и 5% пригласившему. Без ref — 10% пригласившему. Неизвестный, отключённый, некорректный или собственный ref игнорируется: запрос продолжается без бонуса владельцу софта. Действующие коды и прежние условия уже выданных сессий сохраняются. |
operator | string | Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3. operator=1 · operator=1,3 · any/0 |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =getRepeatNumber.
Cerere de exemplu
curl 'https://smscash.org/stubs/handler_api.php?action=getRepeatNumber&api_key=YOUR_API_KEY&number=380670000000&service=go'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getRepeatNumber&api_key=YOUR_API_KEY&number=380670000000&service=go", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getRepeatNumber&api_key=YOUR_API_KEY&number=380670000000&service=go");
const result = await response.text();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getRepeatNumber&api_key=YOUR_API_KEY&number=380670000000&service=go",
timeout=15,
)
print(response.status_code, response.text)Răspunsuri
ACCESS_NUMBER:43:380670000000NUMBER_IN_USE- În primul rând, termină sau anulează sesiunea curentă. dacă numărul este ocupat, re-exunerea nu se efectuează.
- Noul sesiune primește un ID nou și taxa actuală. SMS vechi nu sunt copiate în ea. ref este setat din nou.
- SMScash permite repetarea numai a numerelor din istoria contului. țara este identificată prin numere.
- Cheia unei sesiuni șterse rămâne utilizată: replayarea alocării cu acea cheie returnează SESSION_CLOSED și nu emite un alt număr.
GETgetSmsFullSMS-uri pe care le primim ca JSON+
Istoria structurată a tuturor mesajelor cu ID, trimitere, cod, text și țară, date de serviciu și furnizor.
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
id* | integer | ID-ul sesiunii, primit atunci când a fost emis numărul. |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =getSmsFull.
Cerere de exemplu
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())Răspunsuri
{
"success": true,
"session_id": 42,
"phone": "380670000000",
"status": 1,
"status_name": "received",
"sms_count": 1,
"sms": [
{
"id": 101,
"external_id": "message-101",
"sender": "Service",
"code": "001234",
"text": "Код подтверждения: 001234",
"received_at": "2026-10-09T12:00:00Z",
"country": {
"id": 86,
"name": "Italy"
},
"service": {
"code": "go",
"name": "Google"
},
"provider": {
"id": 1,
"name": "operator=1"
}
}
],
"expires_at": "2026-10-09T12:20:00Z"
}- Încercați să rețineți sms[].id pentru a procesa numai noi mesaje.
- Status numerian SMScash: 1 - activ, 6 - completat, 8 - anulat sau expirat. status_name distinge între așteptare, primire, finalizare, anulare, expirat.
- Codurile primite rămân disponibile după închiderea unei sesiuni. pentru volumuri mari, utilizați REST /activations/{id}/sms cu after_id.
- După un număr fără SMS este eliminată, getStatus şi getSms Întoarcerea STATUS_CANCEL; getSmsFull Întoarce un telefon gol, un telefon gol și un telefon gol. sms Lista de REST /activations/{id} şi /sms Întoarcerea 404 NO_ACTIVATION.
GETgetSmsObțineți SMS ca un string text+
Returnați întreaga istorică SMS în format string pentru clienții existenti.
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
id* | integer | ID-ul sesiunii, primit atunci când a fost emis numărul. |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =getSms.
Cerere de exemplu
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)Răspunsuri
STATUS_OK:2026-10-09T12:00:00Z|001234|Код подтверждения: 001234STATUS_WAIT_CODESTATUS_CANCEL- Formatul mesajului: cod de timp, cod de text. mai multe mesaje sunt separate de o coloană.
- Textul SMS în sine poate conține coloane și șiruri verticale. pentru parsing fiabil, utilizați getSmsFull.
GETgetServicesServicii+
Coduri de serviciu disponibile.Răspunsul este limitat la zona cheii API.
Directori
Publicare…
| Numele | Codul de serviciu service |
|---|
Direcția de servicii este împărțită între furnizor. disponibilitatea numărului este verificată separat.
Puteți limita o cheie la servicii specifice, țări și furnizori. liste goale permit toate opțiunile disponibile.
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
country | integer | Luați ID-ul de la getCountries. |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =getServices.
Cerere de exemplu
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())Răspunsuri
{
"go": {
"name": "Google",
"code": "go"
}
}- Direcția de servicii este împărțită între furnizor. disponibilitatea numărului este verificată separat.
GETgetCountriesȚări+
ID-uri, nume și coduri de apel pentru țările din canalul selectat.
Directori
Publicare…
| Numele | ID de țară country |
|---|
Puteți limita o cheie la servicii specifice, țări și furnizori. liste goale permit toate opțiunile disponibile.
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =getCountries.
Cerere de exemplu
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())Răspunsuri
{
"86": {
"id": 86,
"name": "Italy",
"phone_code": "39"
}
}GETgetOperatorsOperatori+
Operatori disponibili: ID API, nume și perioada de reținere a recompensei.
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
country | integer | Luați ID-ul de la getCountries. |
operator | string | Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3. operator=1 · operator=1,3 · any/0 |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =getOperators.
Cerere de exemplu
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())Răspunsuri
{
"1": {
"id": 1,
"provider_id": 1,
"operator": 1,
"name": "operator=1",
"earnings_hold_days": 45
}
}- Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3.
GETgetRewardsRecomandări pentru SMS+
Rata depinde de țară. Toate sumele de masă sunt pe SMS plătit.
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
country | integer | Luați ID-ul de la getCountries. |
service | string | Coduri de serviciu disponibile.Răspunsul este limitat la zona cheii API. |
operator | string | Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3. operator=1 · operator=1,3 · any/0 |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =getRewards.
Cerere de exemplu
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())Răspunsuri
{
"59": {
"vi": {
"1": "0.01000000",
"3": "0.00500000"
}
}
}{}- Suma tarifară USD este returnată ca linii decimale exacte cu 8 puncte decimale:
- Furnizorii abilitați sunt disponibile la cheia dvs.
- country ID → service code → operator ID → reward (USD)
GETgetTopCountriesByServiceТоп стран по сервису+
До 10 стран с лучшей доставкой смс кодов за последние 24 часа
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
service* | string | Код сервиса из getServices. |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =getTopCountriesByService.
Cerere de exemplu
curl 'https://smscash.org/stubs/handler_api.php?action=getTopCountriesByService&api_key=YOUR_API_KEY&service=go'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getTopCountriesByService&api_key=YOUR_API_KEY&service=go", nil)
if err != nil { panic(err) }
client := &http.Client{Timeout: 15 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(resp.StatusCode, string(body))
}const response = await fetch("https://smscash.org/stubs/handler_api.php?action=getTopCountriesByService&api_key=YOUR_API_KEY&service=go");
const result = await response.json();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getTopCountriesByService&api_key=YOUR_API_KEY&service=go",
timeout=15,
)
print(response.status_code, response.json())Răspunsuri
Структура ответа
| Ключ в примере | Descriere | Directori |
|---|---|---|
["12"], ["36"] | ID de țară Первый, внешний уровень JSON. Каждая запись объединяет операторов одной страны. | getCountries |
["12"]["1"], ["12"]["3"] | ID оператора Второй уровень JSON, внутри страны. Это публичный ID оператора (поставщика), который передаётся в параметре operator. | getOperators |
{
"12": {
"1": {
"reward": 0.012,
"count": 542
},
"3": {
"reward": 0.014,
"count": 301
}
},
"36": {
"1": {
"reward": 0.011,
"count": 190
}
}
}{}- В примере ["12"]["1"] — данные оператора 1 в стране 12. ID стран берутся из getCountries, ID операторов — из getOperators.
- reward — действующее личное вознаграждение в USD, JSON-число. count — количество выданных номеров за последние 24 часа, включая сессии без кода.
- Рейтинг рассчитывается как все полученные непустые коды, делённые на все выдачи номеров за последние 24 часа для выбранного сервиса.
- Повторные непустые коды увеличивают числитель; конверсия может превышать 100%. Начальные нули сохраняются.
- Суточная статистика сервиса кэшируется на 10 минут. Тарифы и ограничения ключа проверяются при каждом запросе. Момент среза — в заголовке X-Statistics-As-Of.
- Нет данных или доступных связок — пустой объект {}. Страны с выдачами и нулём кодов имеют нулевую конверсию. Порядок ключей JSON не задаёт места в рейтинге.
GETgetBalanceSoldul utilizatorului+
SMScash suplimentar: balanța disponibilă, luând în considerare acrualele, bonusurile de referință și cererile de plată.
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =getBalance.
Cerere de exemplu
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)Răspunsuri
ACCESS_BALANCE:0.00- getBalance returnează balanța disponibilă USD cu până la 8 locuri decimale.
- Pot fi retrase doar fondurile a căror perioadă de reținere s-a încheiat.
GETgetHoldBalanceÎn așteptare+
După primirea unui SMS, veniturile sunt reținute pentru perioada stabilită de furnizor. La data indicată, suma devine automat disponibilă pentru retragere.
Parametrii
| Parametru | tipul | Descriere |
|---|---|---|
api_key* | string | Cheia API personală a utilizatorului. |
* Parametru necesar. în toate cererile, acțiunea este de asemenea efectuată =getHoldBalance.
Cerere de exemplu
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)Răspunsuri
ACCESS_HOLD_BALANCE:34.50000001- SMScash · getHoldBalance · USD · 8
- Pot fi retrase doar fondurile a căror perioadă de reținere s-a încheiat.
Coduri de răspuns și repetarea cererilor
Între handler_api.php rezultatele de afaceri sunt de obicei cu HTTP 200. Verifica textul corpului. directorii și getSmsFull Întoarce JSON dacă sunt succes; erori sunt întotdeauna text.
| Codul | HTTP | Cauza și următorul pas |
|---|---|---|
TARIFF_NOT_CONFIGURED | 200 | Rata nu este stabilita incaNumărul de alocare va începe odată ce SMS recompense sunt configurate. |
COUNTRY_BLOCKED | 200 | Numărul de alocare pentru această țară este blocat.Alegeți o altă țară. |
BAD_SERVICE | 200 | Numărul de alocare pentru acest serviciu este blocat.Alegeți un alt serviciu. |
PROVIDER_NOT_READY | 200 | Numărul de numere este temporar inaccesibilReîncărcați catalogurile API. |
BAD_KEY | 400 | Nu api_key sau format invalid.Verificați cheia în cerere. |
INVALID_API_KEY | 401 | Cheia este necunoscută, revocată sau contul este dezactivat.Creați o cheie API valabilă. |
BAD_COUNTRY | 400 | În acest caz, țara are sau nu un număr pozitiv.Luați ID-ul de la getCountries. |
BAD_SESSION_DURATION | 400 | Numerele de telefon sunt emise pentru exact 20 minute.Corect session_duration. |
BAD_REQUEST | 400 | Verificați câmpurile de cerere.Vă rugăm să corectați solicitarea dumneavoastră. |
BAD_SERVICE / BAD_OPERATOR / INVALID_PROVIDER | 200 | Un element de directorie necunoscut sau dezactivat.Reîncărcați catalogurile API. |
BAD_NUMBER | 200 | Formatul de numere incorectă.Numărul este dat în cifre. |
BAD_ACTION / BAD_STATUS | 200 | comandă necunoscută, ID sau operație.Verificați setările |
EMPTY_POOL | 200 | Numerele de telefon care corespund nu sunt disponibile în prezent.Repetă după 10-30 - secunde sau schimbarea filtrelor; |
NUMBER_IN_USE | 200 | Un număr specific este ocupat de o sesiune activă.Încheieți sesiunea sau selectați un alt număr. |
NO_ACTIVATION | 200 | Sesiunea sau numărul anterior nu aparține contului dvs.Verificați ID și cheie. |
SESSION_CLOSED / SMS_REQUIRED | 200 | În prezent, tranzitul de stat nu este disponibil.Verificați condiția și disponibilitatea SMS-urilor. |
SCOPE_BLOCKED | 200 | Serviciul, țara sau furnizorul nu sunt autorizați pentru cheia.Actualizează domeniul de aplicare al cheii API. |
INTERNAL_ERROR | 500 | Erori temporare sau erori de furnizor.Contact și asistență · X-Request-ID |
ALLOCATION_PENDING | 200 | AşteptaregetActiveActivations · getStatus |
ALLOCATION_UNCERTAIN | 200 | Rezultatul alocării nu este confirmat. retragerea automată este disabilită pentru a evita alocarea unui număr al doilea.Rezultatul alocării nu este confirmat. retragerea automată este disabilită pentru a evita alocarea unui număr al doilea. |
Restul returnează un obiect {"error":{"code":"…","message":"…"}} și statutul HTTP regulat 400/401/403/404/409/503.
{
"error": {
"code": "BAD_REQUEST",
"message": "Verificați câmpurile de cerere.",
"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.Rămâne pentru noi integrări
Suma tarifară USD este returnată ca linii decimale exacte cu 8 puncte decimale: 0.00300000 USD.
Valuta balanței este USD. schemele de cerere și de răspuns sunt disponibile în OpenAPI.
/api/v1/catalogServicii și țări/api/v1/tariffsSMS rate de recompensă prin țară/api/v1/offersRata și recompensele/api/v1/servicesDirectori/api/v1/countriesDirectori/api/v1/operatorsDirectori/api/v1/availability?country=1Număr disponibilitate/api/v1/activationsNoua sesiune/api/v1/activations/batch?ids=42,43Verifică mai multe numere/api/v1/activationsUltimele 200 de sesiuni: scope = istorie, așteptare sau toate/api/v1/activations/{id}Sesiune și mesaje/api/v1/activations/{id}/sms?after_id=0&limit=100SMS cu cursor/api/v1/activations/{id}/retryAşteptarea SMS/api/v1/activations/{id}/finishcompletare/api/v1/activations/{id}/cancelAnulare/api/v1/activations/repeatNumăr de reîntoarcere/api/v1/keysAPI cheie/api/v1/keysCreați o cheie/api/v1/keys/{id}Schimbarea numelui sau a politicii/api/v1/keys/{id}Cuvânt cheie/api/v1/referralsCodul de referință și câștigurile/api/v1/summaryBalanţa şi rezumatul/api/v1/balanceÎn așteptare/api/v1/ledgerprofitul de la LEDGER/api/v1/withdrawalsCereri de plată/api/v1/withdrawalsCreați o cerere/api/v1/statisticsStatistici generale/api/v1/earnings/holdsReținerea veniturilorPrimirea unui SMS nou
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": "Cuvânt cheie: 001234",
"sender": "Service",
"received_at": "2026-10-09T12:00:00Z"
}
],
"next_cursor": 101,
"has_more": false
}salvare next_cursor Şi să-l pună pe after_idDacă has_more=trueUrmătoarea pagină poate fi citită imediat. limit: 1–200Sesiuni şi SMS sunt disponibile numai proprietarului.