API dokumentatsioon
Numbrid, sõnumid ja tulu, otse teie rakenduse kaudu.
Alustage ühe taotlusega
Luua oma tahvelarvuti API-tõu, saada number ja kontrollida sõnumid iga 20 sekundi tagant. makse võetakse krediidi, kui SMS koodiga saabub; uuesti lugemine ei mõjuta teie tasakaalu.
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}'Alternatiivne ühilduv vahenduse aadress: /handler_api.php. olemasolevad REST integreeringud töötavad jätkuvalt.
Päringute koostaja
Idempotency-Key: UUID · POST · 8–128
Automaatne valik: kõige rohkem koode viimase tunni, seejärel 24 tunni jooksul. Numbreid pole: järgmine operaator.
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.Võtit ei salvestata. See kontroll ei väljasta numbreid.
Uute integratsioonide jaoks
Teenused ja riigid
Teenuse ja riigi valimine. SMS-i kaudu maksmine sõltub riigist.
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)
Saada number
POST /api/v1/activations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Idempotency-Key: request-unique-001
{
"service": "go",
"country": 86
}Automaatne valik: kõige rohkem koode viimase tunni, seejärel 24 tunni jooksul. Numbreid pole: järgmine operaator.
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: stringSee number on kehtiv 20 minutit. SMS kontrollitakse iga 20 sekundi tagant.
Kontrolli mitut numbrit
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 messageSaldo · Ootel
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 — Saadaval; held_balance — Ootel. USD · 8
Välja saab võtta ainult raha, mille ooteaeg on lõppenud.
Kasutusvalmis kliendid
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.phpKasutaja isiklik API võti.
Teenuse ja riigi valimine. SMS-i kaudu maksmine sõltub riigist.
| Kodu | kirjeldus |
|---|---|
getNumber / getNumberV2 | Saada number |
getStatus / getStatusV2 | Saada uusim kood |
setStatus / finishActivation / cancelActivation | Juhtimise istung |
getPrices / getNumbersStatus | Kontrolli kättesaadavus |
getRewards (SMScash) | SMS-i eest tasu |
getServicesList / getServices | Teenused |
getCountries / getOperators | Teenused ja riigid |
getActiveActivations | istungid |
getBalance | Kasutaja saldo |
getHoldBalance (SMScash) | Ootel |
cost = 0 USD · activationCost = 0 USDreward — SMS-i eest tasu
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.See number on kehtiv 20 minutit. SMS kontrollitakse iga 20 sekundi tagant.
Autentimine ja taganemine
REST: pealkiri Authorization: Bearer YOUR_API_KEY. Ühilduv ühendus: Parameetrid api_key ja actionKasutage HTTPS’i
API-lõike haldamiseks sisestage oma konto.
API nõudmise sagedus ja telefoninumber on piiramatu. ei ole igapäevaseid või tunni kvooteid.
See number on kehtiv 20 minutit. SMS kontrollitakse iga 20 sekundi tagant.
Ülejäänud, ainulaadne Idempotency-Key on vajalik numbrite allokatsiooniks, korduv allokatsioon, taganemis- ja makseküsimused. see on valikuline, kuid soovitatav handler_api.php. võrguküsimuse taganemiseks kasutatakse uuesti võtme; uue tegevuse jaoks kasutatakse uut võtme.
API võtmevaldkond
Võite piirata võtme konkreetsetele teenustele, riikidele ja pakkujatele. tühjad loendid võimaldavad kõiki olemasolevaid võimalusi.
{
"label": "Minu tarkvara",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} Muuda nime ja poliitikat täielikult. saladus on näidatud ainult siis, kui see on loodud.
10% kokku. 5% + 5% tarkvara koodiga.
Kui te arvete välja andmisel palun esitage ref tarkvara omanik. taotlus on volitatud täitja võtme poolt. kood on "Referrals" ja GET /api/v1/referrals → software_ref.
| nõudmine | Kutsume | tarkvara |
|---|---|---|
| Ilma reefita | 10% | — |
| Ühes ref | 5% | 5% |
| Reefiga, ilma referendita | — | 5% |
Platvorm maksab boonuse ilma kasutaja tulu vähendamata. tarkvara omanik ja viitaja võivad olla sama isik. Kasutaja ei saa kasutada oma koodi.
Aegad on kindlaks määratud, kui istung luuakse; lugemine SMS ja tagasipöördumine ei muuda neid. uuesti uuesti uuesti kordamise istung. tariifide arvutamisel annab kasutaja auhind USD 0.003 USD 0.00015 igaühe tarkvara omanikule ja viiteandjale. koguponus on USD 0.00030.
API käsk
11 XVBC-tüüpi meetodid plus teie SMScash tasakaal.
GETgetNumberSaada number+
Loodab seanss ja hoiab kasutajatele kättesaadavaks number. palga ja viitamise saajate tasu määratakse allahindlusel; palga võetakse krediidi, kui SMS koodiga saabub.
Parameetrid
| Parameetrid | tüüp | kirjeldus |
|---|---|---|
api_key* | string | Kasutaja isiklik API võti. |
service* | string | Teenuskoodid: vastus on piiratud API võtme piirkonnaga. |
country* | integer | Võtke ID getCountries. |
operator | string | Võtke ID operators/getOperators (API). operator=1 · any/0 |
session_duration | integer | Seanss kestab 20 minutit. lähen 20 või eirage see parameeter. |
with_operator | integer | 1 lisab vastusele operaatori ID; 0 või parameetri puudumine tagastab kolm osa. |
ref | string | Tarkvara omaniku avalik kood: 5% temale ja 5% külastajale. ilma ref - 10% külastajale. |
* Nõutav parameeter. kõigis taotlustes läbib ka tegevus =getNumber.
Näiteks taotlus
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)vastused
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- Automaatne valik: kõige rohkem koode viimase tunni, seejärel 24 tunni jooksul. Numbreid pole: järgmine operaator.
- Pass Idempotency-Key: sama nõudlus sama võtme tagastab eelmisele istungile. muutes parameetreid kutsub IDEMPOTENCY_CONFLICT.
- Numeriline riik ilma poolita annab EMPTY_POOL; vale riikformaat on BAD_COUNTRY.
- Väljendatud istungi võtme kasutamine jääb: selle võtme allikaadi taasesitamine tagastab SESSION_CLOSED ja ei väljastata uut numbrit.
- Eraldamise tulemus on kinnitamata. automaatne tagasivõtmine on keelatud, et vältida teise numbri eraldamist.
GETgetNumbersStatusKontrolli kättesaadavus+
Saadavad telefoninumbrid teenuse ja riigi järgi.
Parameetrid
| Parameetrid | tüüp | kirjeldus |
|---|---|---|
api_key* | string | Kasutaja isiklik API võti. |
country* | integer | Võtke ID getCountries. |
* Nõutav parameeter. kõigis taotlustes läbib ka tegevus =getNumbersStatus.
Näiteks taotlus
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())vastused
{
"go_0": 0
}- _0 suffix tähendab valikut ilma konkreetse operatori.
- Saadavus viitab tarnija üldisele poolile. valitud kanal kontrollitakse, kui number on eraldatud.
GETgetStatusSaada uusim kood+
Lihtne taotlus istungi seisundi ja viimase SMS-koodiga. koodi juhtivad nullid on säilinud.
Parameetrid
| Parameetrid | tüüp | kirjeldus |
|---|---|---|
api_key* | string | Kasutaja isiklik API võti. |
id* | integer | Teie istungi ID, mis on saadud, kui number on välja antud. |
* Nõutav parameeter. kõigis taotlustes läbib ka tegevus =getStatus.
Näiteks taotlus
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)vastused
STATUS_WAIT_CODESTATUS_OK:001234STATUS_CANCELNO_ACTIVATION- Poll iga 20 sekundi tagant. uudse sõnumi lugemine ei tekita uut makse.
- Pärast retry vana kood ei tagasi: getStatus ootab järgmiselt SMS.
- Kui arv ilma SMS on kustutatud, getStatus ja getSms Tagasitulek STATUS_CANCEL; getSmsFull Tagastab suletud seisundi, tühja telefoni ja tühja sms Üks nimekiri. REST /activations/{id} ja /sms Tagasitulek 404 NO_ACTIVATION.
GETsetStatusJuhtimise istung+
Lõpetab, tühistab või uuesti ootab SMS-i. istung lõpeb samal ajal.
Parameetrid
| Parameetrid | tüüp | kirjeldus |
|---|---|---|
api_key* | string | Kasutaja isiklik API võti. |
id* | integer | Teie istungi ID, mis on saadud, kui number on välja antud. |
status* | integer | 3 — oodake järgmist koodi, pikendamata istungit; 6 — lõpetage pärast SMS; 8 — kohe tühistada. |
* Nõutav parameeter. kõigis taotlustes läbib ka tegevus =setStatus.
Näiteks taotlus
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)vastused
ACCESS_RETRY_GETACCESS_ACTIVATIONACCESS_CANCEL- Tagasisaatmine ootab järgmist koodi algsete 20 minuti jooksul. väljumise ja lõpptähtaeg ei muutu.
- Seega on status =3 Kasutamine Idempotency-Key* kordamine taotlus ei uuenda uue koodi, mis on juba saadud. SMS jääb kättesaadavaks.
- Tühistamine ei eemaldata juba teenitud auhindu.
- Ajalugu säilitatakse ainult numbrid, millel on SMS-kood. tühistatud ja aegunud numbrid ilma koodita kustutatakse.
GETgetRepeatNumberÜtle sama number uuesti+
Avage uus seanss, millel on teie ajaloos teatav number.Saate valida teise kättesaadavuse teenuse samas riigis.
Parameetrid
| Parameetrid | tüüp | kirjeldus |
|---|---|---|
api_key* | string | Kasutaja isiklik API võti. |
number* | string | Ainult numbrid ja valikuline juhtiv + on lubatud. |
service* | string | Teenuskoodid: vastus on piiratud API võtme piirkonnaga. |
session_duration | integer | Seanss kestab 20 minutit. lähen 20 või eirage see parameeter. |
with_operator | integer | 1 lisab vastusele operaatori ID; 0 või parameetri puudumine tagastab kolm osa. |
ref | string | Tarkvara omaniku avalik kood: 5% temale ja 5% külastajale. ilma ref - 10% külastajale. |
operator | string | Võtke ID operators/getOperators (API). operator=1 · any/0 |
* Nõutav parameeter. kõigis taotlustes läbib ka tegevus =getRepeatNumber.
Näiteks taotlus
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)vastused
ACCESS_NUMBER:43:380670000000NUMBER_IN_USE- Esiteks lõpetage või tühistage oma praegune seanss. kui number on hõivatud, ei toimu uuesti väljavoolu.
- Uus seanss saab uue ID ja praeguse tariifi. vana SMS ei kopeeri selle. ref on uuesti määratud.
- SMScash võimaldab korrata ainult numbreid selle konto ajaloos.
- Väljendatud istungi võtme kasutamine jääb: selle võtme allikaadi taasesitamine tagastab SESSION_CLOSED ja ei väljastata uut numbrit.
GETgetSmsFullSaada SMS kui JSON+
Struktureeritud ajalugu kõikide sõnumite ID, saatja, kood, teksti ja riigi, teenuse ja tarnija andmed.
Parameetrid
| Parameetrid | tüüp | kirjeldus |
|---|---|---|
api_key* | string | Kasutaja isiklik API võti. |
id* | integer | Teie istungi ID, mis on saadud, kui number on välja antud. |
* Nõutav parameeter. kõigis taotlustes läbib ka tegevus =getSmsFull.
Näiteks taotlus
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())vastused
{
"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"
}- Soovitud vorming integreerimiseks. mäletage sms[].id töötlemiseks ainult uusi sõnumeid.
- Numeriline seisund SMScash: 1 - aktiivne, 6 - lõpetatud, 8 - tühistatud või lõppev. status_name eristab ootamise, vastuvõtmise, lõpetamise, tühistamise, lõppevuse vahel.
- Saadud koodid jäävad kättesaadavad pärast seansi lõpetamist. Suurte koguste puhul kasutatakse REST /activations/{id}/sms koos after_id.
- Kui arv ilma SMS on kustutatud, getStatus ja getSms Tagasitulek STATUS_CANCEL; getSmsFull Tagastab suletud seisundi, tühja telefoni ja tühja sms Üks nimekiri. REST /activations/{id} ja /sms Tagasitulek 404 NO_ACTIVATION.
GETgetSmsSaada SMS kui teksti string+
Tagastab kogu SMS-i ajalugu olemasolevate klientide jaoks stringvormingus.
Parameetrid
| Parameetrid | tüüp | kirjeldus |
|---|---|---|
api_key* | string | Kasutaja isiklik API võti. |
id* | integer | Teie istungi ID, mis on saadud, kui number on välja antud. |
* Nõutav parameeter. kõigis taotlustes läbib ka tegevus =getSms.
Näiteks taotlus
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)vastused
STATUS_OK:2026-10-09T12:00:00Z|001234|Код подтверждения: 001234STATUS_WAIT_CODESTATUS_CANCEL- Sõnumivorm: aeg-koda-koda tekst. Mitmed sõnumid on eraldatud kolonnaga.
- Tekst SMS ise võib sisaldada kolonid ja vertikaalsed jooned. usaldusväärse parsingu jaoks kasutage getSmsFull.
GETgetServicesTeenused+
Teenuskoodid: vastus on piiratud API võtme piirkonnaga.
Parameetrid
| Parameetrid | tüüp | kirjeldus |
|---|---|---|
api_key* | string | Kasutaja isiklik API võti. |
country | integer | Võtke ID getCountries. |
* Nõutav parameeter. kõigis taotlustes läbib ka tegevus =getServices.
Näiteks taotlus
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())vastused
{
"go": {
"name": "Google",
"code": "go"
}
}- Teenuse direktori jagatakse tarnija vahel. numbrite kättesaadavus kontrollitakse eraldi.
GETgetCountriesRiigid+
ID-d, nimed ja kõne koodid valitud kanalis riikide jaoks.
Parameetrid
| Parameetrid | tüüp | kirjeldus |
|---|---|---|
api_key* | string | Kasutaja isiklik API võti. |
* Nõutav parameeter. kõigis taotlustes läbib ka tegevus =getCountries.
Näiteks taotlus
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())vastused
{
"86": {
"id": 86,
"name": "Italy",
"phone_code": "39"
}
}GETgetOperatorsOperatorid+
Saadaolevad operaatorid: API ID, nimi ja tasu ooteaeg.
Parameetrid
| Parameetrid | tüüp | kirjeldus |
|---|---|---|
api_key* | string | Kasutaja isiklik API võti. |
country | integer | Võtke ID getCountries. |
operator | string | Võtke ID operators/getOperators (API). operator=1 · any/0 |
* Nõutav parameeter. kõigis taotlustes läbib ka tegevus =getOperators.
Näiteks taotlus
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())vastused
{
"1": {
"id": 1,
"provider_id": 1,
"operator": 1,
"name": "Оператор 1",
"earnings_hold_days": 45
}
}- Võtke ID operators/getOperators (API).
GETgetRewardsSMS-i eest tasu+
Tasud sõltuvad riigist. Kõik tabelimäärad on tasutud SMS.
Parameetrid
| Parameetrid | tüüp | kirjeldus |
|---|---|---|
api_key* | string | Kasutaja isiklik API võti. |
country | integer | Võtke ID getCountries. |
service | string | Teenuskoodid: vastus on piiratud API võtme piirkonnaga. |
operator | string | Võtke ID operators/getOperators (API). operator=1 · any/0 |
* Nõutav parameeter. kõigis taotlustes läbib ka tegevus =getRewards.
Näiteks taotlus
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())vastused
{
"59": {
"vi": {
"1": "0.01000000",
"3": "0.00500000"
}
}
}{}- USD tariifimäärad tagastatakse täpselt kümnendikuna, kus on 8 kümnendikuna:
- Teie võtme jaoks kättesaadavad pakkujad.
- country ID → service code → operator ID → reward (USD)
GETgetBalanceKasutaja saldo+
Lisatud SMScash: saadaval tasakaal, võttes arvesse akruale, viide boonuseid ja makseküsimusi.
Parameetrid
| Parameetrid | tüüp | kirjeldus |
|---|---|---|
api_key* | string | Kasutaja isiklik API võti. |
* Nõutav parameeter. kõigis taotlustes läbib ka tegevus =getBalance.
Näiteks taotlus
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)vastused
ACCESS_BALANCE:0.00- getBalance tagasi kättesaadav USD tasakaalu kuni 8 desimaalne kohta.
- Välja saab võtta ainult raha, mille ooteaeg on lõppenud.
GETgetHoldBalanceOotel+
Pärast SMS saamist hoitakse tulu tarnija määratud aja jooksul kinni. Määratud kuupäeval muutub summa automaatselt väljavõetavaks.
Parameetrid
| Parameetrid | tüüp | kirjeldus |
|---|---|---|
api_key* | string | Kasutaja isiklik API võti. |
* Nõutav parameeter. kõigis taotlustes läbib ka tegevus =getHoldBalance.
Näiteks taotlus
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)vastused
ACCESS_HOLD_BALANCE:34.50000001- SMScash · getHoldBalance · USD · 8
- Välja saab võtta ainult raha, mille ooteaeg on lõppenud.
Vastuse koodid ja korduvad taotlused
Selles handler_api.php äritulemused tavaliselt tulevad koos HTTP 200Vaata ka tekstit, juhiseid ja getSmsFull Tagasitulek JSON Kui see on edukas, siis vigu on alati tekst.
| Kodu | HTTP | Põhjus ja järgmine samm |
|---|---|---|
TARIFF_NOT_CONFIGURED | 200 | Tasud ei ole veel kindlaks määratudNumbrite allokatsioon algab pärast SMS-i auhindade konfigureerimist. |
COUNTRY_BLOCKED | 200 | Selle riigi numbrite eraldamine on blokeeritud.Valige teine riik. |
BAD_SERVICE | 200 | Selle teenuse numbrite allokatsioon on blokeeritud.Valige teine teenus. |
PROVIDER_NOT_READY | 200 | Numbrite allokatsioon on ajutiselt kättesaadavVärskenda API kataloogid. |
BAD_KEY | 400 | Ei api_key või kehtiv formaat.Kontrollige taotluses võtme. |
INVALID_API_KEY | 401 | Märks ei ole teada, tühistatud või konto on välja lülitatud.Looge kehtiv API võtmed. |
BAD_COUNTRY | 400 | Riik on puudu või ei ole positiivne number.Võtke ID getCountries. |
BAD_SESSION_DURATION | 400 | Telefoninumbrid on välja antud täpselt 20 minutit.Korrekt session_duration. |
BAD_REQUEST | 400 | kehtiva parameetri või Idempotency-Key.Palun parandage oma taotlust. |
BAD_SERVICE / BAD_OPERATOR / INVALID_PROVIDER | 200 | Tuntud või puudulikud direktori esemed.Värskenda API kataloogid. |
BAD_NUMBER | 200 | Väärne number vorming.Andke number numbriks. |
BAD_ACTION / BAD_STATUS | 200 | Teadmata käsk, ID või operatsioon.Vaadake seadistusi. |
EMPTY_POOL | 200 | Praegu ei ole vastavaid telefoninumbreid saadaval.Korda pärast 10-30 sekundit või muuta filtreid. |
NUMBER_IN_USE | 200 | Teatud arv hõlmab aktiivset istungit.Lõpetage seanss või valige teine number. |
NO_ACTIVATION | 200 | Seanss või eelmine number ei kuulu teie kontole.Kontrollige ID ja võtmed. |
SESSION_CLOSED / SMS_REQUIRED | 200 | Praegu ei ole riiklik üleminek kättesaadav.Kontrollige SMSi tingimust ja kättesaadavust. |
SCOPE_BLOCKED | 200 | Teenus, riik või tarnija ei ole võtme jaoks lubatud.Päevastage API võtme ulatust. |
IDEMPOTENCY_CONFLICT | 200 | See küsimustik on juba seotud teiste parameetritega.Uue operatsiooni jaoks looge uus Idempotency-Key. |
BAD_REF / SELF_REF | 400 | Tarkvara kood on teadmata, puudulik või kuulub kasutaja enda.Kontrollige tarkvara omaniku koodi. |
INTERNAL_ERROR | 500 | ajutine server või tarnija viga.Korda viivitamisega ja samaga Idempotency-Key. |
ALLOCATION_PENDING | 200 | Number jaotus on juba edaspidi. Võta ühe samaga Idempotency-Key.Number jaotus on juba edaspidi. Võta ühe samaga Idempotency-Key. |
ALLOCATION_UNCERTAIN | 200 | Eraldamise tulemus on kinnitamata. automaatne tagasivõtmine on keelatud, et vältida teise numbri eraldamist.Eraldamise tulemus on kinnitamata. automaatne tagasivõtmine on keelatud, et vältida teise numbri eraldamist. |
REST tagastab objekti {"error":{"code":"…","message":"…"}} HTTP-i staatused on 400/401/403/404/409/503.
{
"error": {
"code": "BAD_REQUEST",
"message": "Kontrollige taotluse valdkondi.",
"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.Uute integratsioonide jaoks
USD tariifimäärad tagastatakse täpselt kümnendikuna, kus on 8 kümnendikuna: 0.00300000 USD.
Tasakaalu valuuta on USD. nõudluse ja vastuse skeemid on saadaval OpenAPI.
/api/v1/catalogTeenused ja riigid/api/v1/tariffsSMS palga hinnad riigis/api/v1/offersTasud ja auhinnad/api/v1/servicesDirektorid/api/v1/countriesDirektorid/api/v1/operatorsDirektorid/api/v1/availability?country=1Numbrit saadaval/api/v1/activationsUus istung/api/v1/activations/batch?ids=42,43Kontrolli mitut numbrit/api/v1/activationsViimane 200 istungit: ulatus = ajalugu, ootus või kõik/api/v1/activations/{id}Istung ja sõnumid/api/v1/activations/{id}/sms?after_id=0&limit=100SMS koos kursoriga/api/v1/activations/{id}/retryOotame SMS-i/api/v1/activations/{id}/finishLõpetamine/api/v1/activations/{id}/canceltühistada/api/v1/activations/repeatNumbriline tagasivõtmine/api/v1/keysAPI võtmed/api/v1/keysLooge võti/api/v1/keys/{id}Nimi või poliitika muutmine/api/v1/keys/{id}Tagasi võtmed/api/v1/referralsReferentkood ja tulu/api/v1/summaryTasakaal ja kokkuvõte/api/v1/balanceOotel/api/v1/ledgerKasumid LEDGER/api/v1/withdrawalsMakseküsimused/api/v1/withdrawalsLooge taotlus/api/v1/statisticsÜldised statistika/api/v1/earnings/holdsTulude ooteaegSaada ainult uus 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": "Kood: 001234",
"sender": "Service",
"received_at": "2026-10-09T12:00:00Z"
}
],
"next_cursor": 101,
"has_more": false
}päästa next_cursor ja selle üle, kui after_idKui has_more=trueJärgmise lehekülge saab lugeda kohe. limit: 1–200istungid ja SMS See on kättesaadav ainult omanikule.