API dokumentacija
Številke, sporočila in zaslužki, neposredno iz vaše aplikacije.
Začnite z eno zahtevo
Ustvarite API ključ v vaši plošči, dobite številko in preverite sporočila vsake 20 sekund. Plačilo se kredito, ko SMS s kodo pride; branje znova ne vpliva na vaš ravnotežje.
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}'Alternativna združljiva vmesna adresa: /handler_api.php. Obstoječe integracije REST še vedno delujejo.
Ustvarjanje zahtev
Idempotency-Key: UUID · POST · 8–128
Samodejna izbira: največ kod v zadnji uri, nato v 24 urah. Ni številk: naslednji operater.
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.Ključ se ne shrani. To preverjanje ne dodeljuje številk.
Ostanejo nove integracije
Storitve in države
Izberite storitev in državo. plačilo po SMS je odvisno od države.
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)
Pridobite številko
POST /api/v1/activations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Idempotency-Key: request-unique-001
{
"service": "go",
"country": 86
}Samodejna izbira: največ kod v zadnji uri, nato v 24 urah. Ni številk: naslednji operater.
201: new session · 200: replay of the same operation
service + country OR offer_id · duration_minutes: 20
ref: software owner code (optional)
operator: public ID (e.g. 1 for Operator 1), optional · any/0: automatic
country: integer · service: string · SMS code: stringŠtevilka je veljavna 20 minut. SMS se preverja vsakih 20 sekund. lahko takoj preklicate.
Preveri več številk
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 messageStanje · Zadržano
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 — Na voljo; held_balance — Zadržano. USD · 8
Dvignete lahko samo sredstva, za katera se je obdobje zadržanja končalo.
Odjemalci, pripravljeni za uporabo
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.phpOsebni API ključ uporabnika.
Izberite storitev in državo. plačilo po SMS je odvisno od države.
| Koda | opis |
|---|---|
getNumber / getNumberV2 | Pridobite številko |
getStatus / getStatusV2 | Pridobite najnovejši kodo |
setStatus / finishActivation / cancelActivation | Upravljanje seje |
getPrices / getNumbersStatus | Preverite razpoložljivost |
getRewards (SMScash) | Nagrada za SMS |
getServicesList / getServices | Storitve |
getCountries / getOperators | Storitve in države |
getActiveActivations | Sedež |
getBalance | Stanje uporabnika |
getHoldBalance (SMScash) | Zadržano |
cost = 0 USD · activationCost = 0 USDreward — Nagrada za 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.Številka je veljavna 20 minut. SMS se preverja vsakih 20 sekund. lahko takoj preklicate.
Avtentikacija in upokojitev
REST: naslovnik Authorization: Bearer YOUR_API_KEY. Združljiv vmesnik: Parametri api_key in actionUporabljajte HTTPS
Če želite upravljati API ključe, vnesite svoj račun.
Pogostost zahtevkov API in število telefonskih številk je neomejeno. ni dnevnih ali urnih kvote.
Številka je veljavna 20 minut. SMS se preverja vsakih 20 sekund. lahko takoj preklicate.
V resnici, edinstvena Idempotency-Key je potrebno za dodelitev številk, ponovitev dodelitev, povračilo in plačilo zahteve. je opcionalno, vendar priporočljivo v handler_api.php. ponovno uporabite ključ pri povračilu omrežja zahteve; uporabite nov ključ za novo operacijo.
API ključni obseg
Lahko omejite ključ na določene storitve, države in ponudnike. prazne sezname omogočajo vse razpoložljive možnosti.
{
"label": "Moja programska oprema",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} spremeni ime in politiko v celoti. skrivnost se kaže le, ko je ustvarjena.
10% v skupnem. 5% + 5% z programsko kodo.
Ko izdajete številko, prosimo, da ref lastnik programske opreme. zahtevo pooblaščena je ključ izvršitelja. kodo je v oddelku »Poročila« in v GET /api/v1/referrals → software_ref.
| zahtevo | povabilo | Programska oprema |
|---|---|---|
| Brez ref | 10% | — |
| Z ref | 5% | 5% |
| Z ref, brez refererjev | — | 5% |
Platforma plača bonus, ne da bi zmanjšala zaslužke uporabnika. lastnik programske opreme in referer lahko isto osebo. uporabnik ne more uporabljati lastnega koda.
Pogoj je določen, ko se začne seja; branje SMS in odhod ne spreminjajo jih. Prehod ref znova za novo ponavljajočo sejo. V izračunu tarife, uporabnik nagrada USD 0.003 daje USD 0.00015 vsakemu lastniku programske opreme in refererju. Skupni bonus je USD 0.00030.
API zapovedi
11 XVBC-stila metod plus vaš SMScash ravnovesje.
GETgetNumberPridobite številko+
Ustvarja sejo in rezervira razpoložljivo številko za uporabnika. nagradna stopnja in prejemniki reference so fiksni na dodelitvi; nagrada se kredito, ko pride SMS s kodo.
Parametri
| Parametri | tip | opis |
|---|---|---|
api_key* | string | Osebni API ključ uporabnika. |
service* | string | Dostopni kodo storitev. Odgovor je omejen na območje API ključa. |
country* | integer | Vzemi ID iz getCountries. |
operator | string | Vzemi ID iz operators/getOperators (API). operator=1 · any/0 |
session_duration | integer | Sedenje traja 20 minut. premaknite 20 ali izogibajte se tem parametru. |
with_operator | integer | 1 doda ID operaterja v odgovor; 0 ali izpuščen parameter vrne tri dele. |
ref | string | Javni kodo lastnika programske opreme: 5% za njega in 5% za gostitelja. brez ref - 10% za gostitelja. |
* Zahtevani parametri.V vseh zahtevah tudi preide akcija =getNumber.
Primeri zahteve
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)Odgovori
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- Samodejna izbira: največ kod v zadnji uri, nato v 24 urah. Ni številk: naslednji operater.
- Prehod Idempotency-Key: iste zahtevek s istem ključom vrne predhodno zasedanje. Sprememba pokličevanja parametra IDEMPOTENCY_CONFLICT.
- Številna država brez bazena daje EMPTY_POOL; napačen državni format je BAD_COUNTRY.
- Ključ izbrisane seje se še vedno uporablja: ponovna predvajanja dodelitve s tem ključem vrne SESSION_CLOSED in ne izda drugega številke.
- Rezultati dodelitve niso potrjeni. avtomatsko povračilo je onemogočeno, da se izogne dodelitvi drugega števila.
GETgetNumbersStatusPreverite razpoložljivost+
Razpoložljive telefonske številke po storitvi in državi.
Parametri
| Parametri | tip | opis |
|---|---|---|
api_key* | string | Osebni API ključ uporabnika. |
country* | integer | Vzemi ID iz getCountries. |
* Zahtevani parametri.V vseh zahtevah tudi preide akcija =getNumbersStatus.
Primeri zahteve
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())Odgovori
{
"go_0": 0
}- _0 suffix pomeni izbiro brez določenega operaterja.
- Razpoložljivost se nanaša na celoten bazen dobavitelja. izvoljeni kanal se preveri, ko je dodeljen številka.
GETgetStatusPridobite najnovejši kodo+
Enostavno zahtevo za stanje seje in zadnje SMS koda. vodilne ničle v kodi so ohranjene.
Parametri
| Parametri | tip | opis |
|---|---|---|
api_key* | string | Osebni API ključ uporabnika. |
id* | integer | ID vaše seje, ki je bil prejeti, ko je bil izdan številka. |
* Zahtevani parametri.V vseh zahtevah tudi preide akcija =getStatus.
Primeri zahteve
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)Odgovori
STATUS_WAIT_CODESTATUS_OK:001234STATUS_CANCELNO_ACTIVATION- Poll vsakih 20 sekund. branje sporočila znova ne ustvari dodatne plačila.
- Po tem retry staro oznako ni vrnjeno: getStatus počakajo na naslednje SMS.
- Po številki brez SMS je bil odstranjen, getStatus in getSms vrnitev STATUS_CANCEL; getSmsFull vrne zaprto stanje, prazen telefon in prazen telefon sms seznam je. REST /activations/{id} in /sms vrnitev 404 NO_ACTIVATION.
GETsetStatusUpravljanje seje+
Konča, preklopi ali ponovno počaka na SMS. seja poteka enako.
Parametri
| Parametri | tip | opis |
|---|---|---|
api_key* | string | Osebni API ključ uporabnika. |
id* | integer | ID vaše seje, ki je bil prejeti, ko je bil izdan številka. |
status* | integer | 3 - počakajte na naslednji kodo brez podaljšanja seje; 6 - konča po SMS; 8 - takoj preklic. |
* Zahtevani parametri.V vseh zahtevah tudi preide akcija =setStatus.
Primeri zahteve
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)Odgovori
ACCESS_RETRY_GETACCESS_ACTIVATIONACCESS_CANCEL- Vrne se počaka na naslednji kodo v prvotnih 20 minutah. izhod in čas izteka se ne spreminjajo.
- Za status =3 uporaba Idempotency-Key: ponavljanje zahteve ne bo ponovno nastaviti novega že prejema koda. SMS ostanejo na voljo.
- Odstranitev ne odstrani že zaslužene nagrade.
- V zgodovini se hranijo samo številke z SMS kodo. odložene in iztekajoče številke brez koda se izbrišejo.
GETgetRepeatNumberZnova izberite isto številko+
Odprite novo sejo z določeno številko iz zgodovine. lahko izberete drugo razpoložljivo storitev v isti državi.
Parametri
| Parametri | tip | opis |
|---|---|---|
api_key* | string | Osebni API ključ uporabnika. |
number* | string | Samo številke in opcionalni vodilni + so dovoljeni. |
service* | string | Dostopni kodo storitev. Odgovor je omejen na območje API ključa. |
session_duration | integer | Sedenje traja 20 minut. premaknite 20 ali izogibajte se tem parametru. |
with_operator | integer | 1 doda ID operaterja v odgovor; 0 ali izpuščen parameter vrne tri dele. |
ref | string | Javni kodo lastnika programske opreme: 5% za njega in 5% za gostitelja. brez ref - 10% za gostitelja. |
operator | string | Vzemi ID iz operators/getOperators (API). operator=1 · any/0 |
* Zahtevani parametri.V vseh zahtevah tudi preide akcija =getRepeatNumber.
Primeri zahteve
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)Odgovori
ACCESS_NUMBER:43:380670000000NUMBER_IN_USE- Najprej končajte ali prekličite trenutno sejo. če je število zasedeno, ponovno izhod ni opravljen.
- V novem delu se je pridružila nova ID in trenutni tarif. stare SMS V njej se ne kopirajo. ref se ponovno postavlja.
- SMScash omogoča ponavljanje le številk iz zgodovine tega računa.
- Ključ izbrisane seje se še vedno uporablja: ponovna predvajanja dodelitve s tem ključem vrne SESSION_CLOSED in ne izda drugega številke.
GETgetSmsFullSMS sporočilo kot JSON+
Struktura zgodovine vseh sporočil z ID, pošiljatelj, kodo, besedilo in državo, podatke o storitvi in dobavitelju.
Parametri
| Parametri | tip | opis |
|---|---|---|
api_key* | string | Osebni API ključ uporabnika. |
id* | integer | ID vaše seje, ki je bil prejeti, ko je bil izdan številka. |
* Zahtevani parametri.V vseh zahtevah tudi preide akcija =getSmsFull.
Primeri zahteve
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())Odgovori
{
"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"
}- Preferirani format za integracijo.Pomnite si sms[].id za obdelavo samo novih sporočil.
- Številni status SMScash: 1 - aktivni, 6 - končan, 8 - preklic ali izteka. status_name razlikuje med počakanjem, prejetim, končanim, preklic, izteka.
- Prejete kode ostajajo razpoložljive po zaključku zasedanja. Za velike obsega uporabite REST /activations/{id}/sms z after_id.
- Po številki brez SMS je bil odstranjen, getStatus in getSms vrnitev STATUS_CANCEL; getSmsFull vrne zaprto stanje, prazen telefon in prazen telefon sms seznam je. REST /activations/{id} in /sms vrnitev 404 NO_ACTIVATION.
GETgetSmsSMS kot besedilna vrstica+
Povrnitev celotne zgodovine SMS v obliki vrstice za obstoječe stranke.
Parametri
| Parametri | tip | opis |
|---|---|---|
api_key* | string | Osebni API ključ uporabnika. |
id* | integer | ID vaše seje, ki je bil prejeti, ko je bil izdan številka. |
* Zahtevani parametri.V vseh zahtevah tudi preide akcija =getSms.
Primeri zahteve
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)Odgovori
STATUS_OK:2026-10-09T12:00:00Z|001234|Код подтверждения: 001234STATUS_WAIT_CODESTATUS_CANCEL- Oblikovanje sporočila: časovni kodo, besedilo. več sporočil je ločeno s stolpcem.
- Sam SMS lahko vsebuje stolpce in vertikalne vrstice. za zanesljivo parsing, uporabite getSmsFull.
GETgetServicesStoritve+
Dostopni kodo storitev. Odgovor je omejen na območje API ključa.
Parametri
| Parametri | tip | opis |
|---|---|---|
api_key* | string | Osebni API ključ uporabnika. |
country | integer | Vzemi ID iz getCountries. |
* Zahtevani parametri.V vseh zahtevah tudi preide akcija =getServices.
Primeri zahteve
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())Odgovori
{
"go": {
"name": "Google",
"code": "go"
}
}- Področje storitev je razdeljeno na vse ponudnike.Prednost številk se preveri ločeno.
GETgetCountriesDržave+
ID, imena in klicni kodi za države v izbranem kanalu.
Parametri
| Parametri | tip | opis |
|---|---|---|
api_key* | string | Osebni API ključ uporabnika. |
* Zahtevani parametri.V vseh zahtevah tudi preide akcija =getCountries.
Primeri zahteve
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())Odgovori
{
"86": {
"id": 86,
"name": "Italy",
"phone_code": "39"
}
}GETgetOperatorsOperatorji+
Razpoložljivi operaterji: API ID, ime in obdobje zadržanja nagrade.
Parametri
| Parametri | tip | opis |
|---|---|---|
api_key* | string | Osebni API ključ uporabnika. |
country | integer | Vzemi ID iz getCountries. |
operator | string | Vzemi ID iz operators/getOperators (API). operator=1 · any/0 |
* Zahtevani parametri.V vseh zahtevah tudi preide akcija =getOperators.
Primeri zahteve
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())Odgovori
{
"1": {
"id": 1,
"provider_id": 1,
"operator": 1,
"name": "Оператор 1",
"earnings_hold_days": 45
}
}- Vzemi ID iz operators/getOperators (API).
GETgetRewardsNagrada za SMS+
Stopnje so odvisne od države.Vse zneske za tabelo so na plačan SMS.
Parametri
| Parametri | tip | opis |
|---|---|---|
api_key* | string | Osebni API ključ uporabnika. |
country | integer | Vzemi ID iz getCountries. |
service | string | Dostopni kodo storitev. Odgovor je omejen na območje API ključa. |
operator | string | Vzemi ID iz operators/getOperators (API). operator=1 · any/0 |
* Zahtevani parametri.V vseh zahtevah tudi preide akcija =getRewards.
Primeri zahteve
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())Odgovori
{
"59": {
"vi": {
"1": "0.01000000",
"3": "0.00500000"
}
}
}{}- Zneski tarifne vrednosti USD se vrnejo kot natančne desetine z 8 desetimi točkami:
- Omogočene ponudnike, ki so na voljo za vaš ključ.
- country ID → service code → operator ID → reward (USD)
GETgetBalanceStanje uporabnika+
Dodatna SMScash: razpoložljiva bilanca, ki upošteva akruale, referralne bonuse in zahteve za plačilo.
Parametri
| Parametri | tip | opis |
|---|---|---|
api_key* | string | Osebni API ključ uporabnika. |
* Zahtevani parametri.V vseh zahtevah tudi preide akcija =getBalance.
Primeri zahteve
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)Odgovori
ACCESS_BALANCE:0.00- getBalance vrne razpoložljive USD ravnovesje z do 8 Desetih mest je.
- Dvignete lahko samo sredstva, za katera se je obdobje zadržanja končalo.
GETgetHoldBalanceZadržano+
Po prejemu SMS se zaslužek zadrži za obdobje, ki ga določi dobavitelj. Na navedeni datum je znesek samodejno na voljo za dvig.
Parametri
| Parametri | tip | opis |
|---|---|---|
api_key* | string | Osebni API ključ uporabnika. |
* Zahtevani parametri.V vseh zahtevah tudi preide akcija =getHoldBalance.
Primeri zahteve
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)Odgovori
ACCESS_HOLD_BALANCE:34.50000001- SMScash · getHoldBalance · USD · 8
- Dvignete lahko samo sredstva, za katera se je obdobje zadržanja končalo.
Odgovorne kode in ponavljajoče se zahteve
V handler_apiPoslovne rezultate .php običajno pride s HTTP 200. Preveri besedilo tela. getSmsFull vrnitev JSON če je uspešno; napake so vedno besedila.
| Koda | HTTP | Vzrok in naslednji korak |
|---|---|---|
TARIFF_NOT_CONFIGURED | 200 | Stopnje še niso določeneŠtevilka dodelitve se začne, ko so nastavljeni SMS nagrade. |
COUNTRY_BLOCKED | 200 | Številka dodelitve za to državo je blokirana.Izberite drugo državo. |
BAD_SERVICE | 200 | Številka dodelitve za to storitev je blokirana.Izberite drugo storitev. |
PROVIDER_NOT_READY | 200 | Številka dodelitve je začasno nedostopnaOdstranite katalog API. |
BAD_KEY | 400 | Brez api_key ali nevažno obliko.Preverite ključ v zahtevi. |
INVALID_API_KEY | 401 | Ključ je neznan, preklic ali račun je onemogočen.Ustvarite veljaven API ključ. |
BAD_COUNTRY | 400 | Država je manjka ali ne pozitivna številka.Vzemi ID iz getCountries. |
BAD_SESSION_DURATION | 400 | Telefonske številke so izdali za natančno 20 minut.Popravitev session_duration. |
BAD_REQUEST | 400 | Nevažena parametra ali Idempotency-Key.Prosimo, da popravite vašo zahtevo. |
BAD_SERVICE / BAD_OPERATOR / INVALID_PROVIDER | 200 | Neznani ali onemogočeni element v naslovu.Odstranite katalog API. |
BAD_NUMBER | 200 | Nepravilna številka v obliki.Vnesite številko v številke. |
BAD_ACTION / BAD_STATUS | 200 | Neznano poveljstvo, ID ali operacija.Preverite nastavitve |
EMPTY_POOL | 200 | Trenutno ni na voljo nobenih telefonskih številk.Ponovite po 10-30 sekundah ali spremenite filtre. |
NUMBER_IN_USE | 200 | Posebno število je zasedeno z aktivno sejo.Končajte sejo ali izberite drugo številko. |
NO_ACTIVATION | 200 | Sedež ali prejšnje številke ne spadajo v vaš račun.Preverite ID in ključ. |
SESSION_CLOSED / SMS_REQUIRED | 200 | Državni prehod trenutno ni na voljo.Preverite stanje in razpoložljivost SMS. |
SCOPE_BLOCKED | 200 | Storitev, država ali dobavitelj ni dovoljen za ključ.Posodobite obseg API ključa. |
IDEMPOTENCY_CONFLICT | 200 | Ta ključ za poizvedbo je že povezan z drugimi parametri.Za novo operacijo ustvarite še en Idempotency-Key. |
BAD_REF / SELF_REF | 400 | Programska oprema je neznana, onemogočena ali pripada samemu uporabniku.Preverite kodo lastnika programske opreme. |
INTERNAL_ERROR | 500 | Napaka v ponudniku ali ponudniku.Ponavljajte z začasno in enako Idempotency-Key. |
ALLOCATION_PENDING | 200 | Številna dodelitev je že v napredku. vrnitev z istim Idempotency-Key.Številna dodelitev je že v napredku. vrnitev z istim Idempotency-Key. |
ALLOCATION_UNCERTAIN | 200 | Rezultati dodelitve niso potrjeni. avtomatsko povračilo je onemogočeno, da se izogne dodelitvi drugega števila.Rezultati dodelitve niso potrjeni. avtomatsko povračilo je onemogočeno, da se izogne dodelitvi drugega števila. |
Ostalo vrne predmet {"error":{"code":"…","message":"…"}} in redni HTTP statusi 400/401/403/404/409/503.
{
"error": {
"code": "BAD_REQUEST",
"message": "Preverite polja za zahtevo.",
"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.Ostanejo nove integracije
Zneski tarifne vrednosti USD se vrnejo kot natančne desetine z 8 desetimi točkami: 0.00300000 USD.
Valuta je USD. sheme zahteve in odziva so na voljo v OpenAPI.
/api/v1/catalogStoritve in države/api/v1/tariffsSMS nagradne stopnje po državi/api/v1/offersStopnje in nagrade/api/v1/servicesDirektorji/api/v1/countriesDirektorji/api/v1/operatorsDirektorji/api/v1/availability?country=1Številka razpoložljivosti/api/v1/activationsNova seja/api/v1/activations/batch?ids=42,43Preveri več številk/api/v1/activationsZadnje 200 sej: obseg = zgodovina, čakanje ali vse/api/v1/activations/{id}Sedež in sporočila/api/v1/activations/{id}/sms?after_id=0&limit=100SMS z novimi kurzorji/api/v1/activations/{id}/retryČakajo na SMS/api/v1/activations/{id}/finishdokončanje/api/v1/activations/{id}/cancelodpoved/api/v1/activations/repeatŠtevilo vračanja/api/v1/keysAPI ključavnice/api/v1/keysUstvarite ključ/api/v1/keys/{id}Spreminjanje imena ali politike/api/v1/keys/{id}Odstranite ključ/api/v1/referralsReferenčni kodo in dobiček/api/v1/summaryBalanca in povzetek/api/v1/balanceZadržano/api/v1/ledgerZaslužek Ledger/api/v1/withdrawalsZahteve za plačilo/api/v1/withdrawalsUstvarite zahtevo/api/v1/statisticsSplošna statistika/api/v1/earnings/holdsZadržanje zaslužkovPrejemanje samo novih SMS
GET /api/v1/activations/42/sms?after_id=0&limit=100
Authorization: Bearer YOUR_API_KEY{
"session_id": 42,
"sms": [
{
"id": 101,
"code": "001234",
"text": "Številka: 001234",
"sender": "Service",
"received_at": "2026-10-09T12:00:00Z"
}
],
"next_cursor": 101,
"has_more": false
}Spravite next_cursor in prenesite ga, kot after_id. Če has_more=true, naslednji strani se lahko takoj preberi. meja: 1–200. Zasede in SMS so na voljo samo lastnika.