Documentare API
Numere, mesaje și câștiguri, direct din aplicația dvs.
Î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 20 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 -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}'Adresa alternativă a interfeței compatibile: /handler_api.php. Integrările existente REST continuă să funcționeze.
Generator de cereri
Idempotency-Key: UUID · POST · 8–128
Selecție automată: cele mai multe coduri în ultima oră, apoi în 24 de ore. Fără numere: următorul operator.
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.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
POST /api/v1/activations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Idempotency-Key: request-unique-001
{
"service": "go",
"country": 86
}Selecție automată: cele mai multe coduri în ultima oră, apoi în 24 de ore. Fără numere: următorul operator.
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: stringNumărul este valabil timp de 20 minute. SMS este verificat la fiecare 20 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": 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 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';
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.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' \
-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.Numărul este valabil timp de 20 minute. SMS este verificat la fiecare 20 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 20 de secunde. puteți anula imediat.
În rest, un singur Idempotency-Key este necesar pentru alocarea numărului, alocarea repetată, retragerea și solicitările de plată. este opțională, dar recomandată în handler_api.php. Reutilizarea cheii atunci când retrage o cerere de rețea; utilizați o nouă cheie pentru o nouă operațiune.
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 | Luați ID-ul de la operators/getOperators (API). operator=1 · 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 | Cod public al proprietarului software: 5% Pentru el şi 5% pentru invitaţi, fără ref - 10% pentru invitaţi. |
* 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' \
-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)Răspunsuri
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- Selecție automată: cele mai multe coduri în ultima oră, apoi în 24 de ore. Fără numere: următorul operator.
- Pass Idempotency-Key: aceeași cerere cu aceeași cheie returnează sesiunea anterioară.
- 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' \
-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)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ă.
- Pentru stat =3 utilizare Idempotency-Key: repetarea cererii nu va reînnoi codul nou deja primit. SMS rămâne disponibilă.
- 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 | Cod public al proprietarului software: 5% Pentru el şi 5% pentru invitaţi, fără ref - 10% pentru invitaţi. |
operator | string | Luați ID-ul de la operators/getOperators (API). operator=1 · 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' \
-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)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": "Оператор 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.
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.
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 | Luați ID-ul de la operators/getOperators (API). operator=1 · 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": "Оператор 1",
"earnings_hold_days": 45
}
}- Luați ID-ul de la operators/getOperators (API).
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 | Luați ID-ul de la operators/getOperators (API). operator=1 · 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)
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 | Parametrul nevalid sau Idempotency-Key.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. |
IDEMPOTENCY_CONFLICT | 200 | Acest cheie de întrebare este deja asociat cu alte parametri.Pentru o nouă operaţie, crea altă Idempotency-Key. |
BAD_REF / SELF_REF | 400 | Codul software este necunoscut, dezactivat sau aparține utilizatorului însuși.Verificați codul proprietarului software. |
INTERNAL_ERROR | 500 | Erori temporare sau erori de furnizor.Repetiţi cu o întârziere şi la fel Idempotency-Key. |
ALLOCATION_PENDING | 200 | Alocarea numărului este deja în progres. Încearcă cu același Idempotency-Key.Alocarea numărului este deja în progres. Încearcă cu același Idempotency-Key. |
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.