API dokumentation
Numbers, meddelelser og indtægter, direkte fra din app.
Start med en anmodning
Skab en API-nøgle i din dashboard, få et nummer og tjek for meddelelser hvert 20 sekunder.Payment er krediteret, når en SMS med en kode ankommer; at læse det igen påvirker ikke din balance.
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}'Alternativ kompatibel grænsefladeadresse: /handler_api.php. eksisterende REST integrationer fortsætter med at fungere.
Opret forespørgsler
Idempotency-Key: UUID · POST · 8–128
Automatisk valg: flest koder den seneste time, derefter 24 timer. Ingen numre: næste operatør.
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.Nøglen gemmes ikke. Denne kontrol tildeler ikke numre.
Tilbud til nye integrationer
Tjenester og lande
Vælg en service og land. Betaling via SMS afhænger af landet.
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)
Få et nummer
POST /api/v1/activations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Idempotency-Key: request-unique-001
{
"service": "go",
"country": 86
}Automatisk valg: flest koder den seneste time, derefter 24 timer. Ingen numre: næste operatør.
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: stringDet nummer er gyldigt for 20 Minutter af. SMS Alle kontrolleres 20 Du kan gentagne det, og du kan gentagne det umiddelbart.
Kontrollér flere numre
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 · Tilbageholdt
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 — Tilgængeligt; held_balance — Tilbageholdt. USD · 8
Kun penge, hvis tilbageholdelsesperiode er udløbet, kan hæves.
Brugsklare klienter
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.phpBrugerens personlige API-nøgle.
Vælg en service og land. Betaling via SMS afhænger af landet.
| Kode | Beskrivelse |
|---|---|
getNumber / getNumberV2 | Få et nummer |
getStatus / getStatusV2 | Få den nyeste kode |
setStatus / finishActivation / cancelActivation | Styring af sessioner |
getPrices / getNumbersStatus | Tjek tilgængelighed |
getRewards (SMScash) | Belønning for SMS |
getServicesList / getServices | Tjenester |
getCountries / getOperators | Tjenester og lande |
getActiveActivations | Sæsoner |
getBalance | Brugerens saldo |
getHoldBalance (SMScash) | Tilbageholdt |
cost = 0 USD · activationCost = 0 USDreward — Belønning for 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.Det nummer er gyldigt for 20 Minutter af. SMS Alle kontrolleres 20 Du kan gentagne det, og du kan gentagne det umiddelbart.
Autentisering og returer
REST: Hæder Authorization: Bearer YOUR_API_KEY. Kompatibel grænseflade: Parameter api_key og actionBrug af HTTPS.
For at administrere API-nøgler, skal du indtaste din konto.
API-forespørgsel frekvens og antallet af telefonnummer er ubegrænset. Der er ingen daglige eller timeløse kvoter.
Det nummer er gyldigt for 20 Minutter af. SMS Alle kontrolleres 20 Du kan gentagne det, og du kan gentagne det umiddelbart.
I øvrigt er en unik Idempotency-Key Det er valgfritt, men anbefales i handler_api.php. genanvendelse af nøglen, når du returerer en netværksforespørgsel; brug en ny nøgle for en ny operation.
API nøgleområde
Du kan begrænse en nøgle til specifikke tjenester, lande og leverandører. tomme lister giver alle de tilgængelige muligheder.
{
"label": "Min software",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} Navnet og politikken ændres helt. hemmeligheden vises kun, når den er skabt.
10% i alt. 5% + 5% med software kode.
Når du udsteder et nummer, bedes du give ref ejet af softwaren. anmodningen er autoriseret af udføreren nøgle. koden er i afsnittet "Referrals" og i GET /api/v1/referrals → software_ref.
| Anmodning | Inviterer | Software |
|---|---|---|
| Uden ref | 10% | — |
| Med ref | 5% | 5% |
| Med ref, ingen referrer | — | 5% |
Plattformen betaler bonusen uden at reducere arbejdstagerens indtjeninger. softwares ejer og referrer kan være den samme person. En arbejdstager kan ikke bruge sin egen kode.
Termerne er fastsatte, når en session er skabt; læsning SMS og tilbagetrækning ændrer dem ikke. Pass ref igen for en ny gentagelse session. I tariff beregningen, en arbejdstager belønning på USD 0.003 giver USD 0.00015 hver til software ejeren og referrer. Den samlede bonus er USD 0.00030.
API Kommandoer
11 XVBC-stil metoder plus din SMScash balance.
GETgetNumberFå et nummer+
Oprettes en session og reserveres et tilgængeligt nummer for arbejdstageren. belønningsraten og referral modtagere er fastgjort ved tildeling; belønningen krediteres, når en SMS med en kode ankommer.
Parameter
| Parameter | Typ af | Beskrivelse |
|---|---|---|
api_key* | string | Brugerens personlige API-nøgle. |
service* | string | Tilgængelige servicekoder. svaret er begrænset til området for API-nøglen. |
country* | integer | Tag ID fra getCountries. |
operator | string | Tag ID fra operators/getOperators (API). operator=1 · any/0 |
session_duration | integer | Sessionen varer 20 minutter. pass 20 eller undgå denne parameter. |
with_operator | integer | 1 tilføjer operatørens ID til svaret; 0 eller udeladelse giver tre dele. |
ref | string | Offentlig kode for softwaret ejer: 5% for ham og 5% for gæsten. uden ref - 10% til gæsten. |
* Anmodet parameter. i alle anmodninger passerer også handling=getNumber.
Eksempelforespørgsel
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)Svar
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- Automatisk valg: flest koder den seneste time, derefter 24 timer. Ingen numre: næste operatør.
- Pass Idempotency-Key: den samme anmodning med samme nøgle returnerer den foregående session. Endring af parametrene IDEMPOTENCY_CONFLICT.
- Et numerisk land uden en pool giver EMPTY_POOL; det forkerte landformat er BAD_COUNTRY.
- Nøglen til en slettet session fortsætter med at blive brugt: genoptagelse af tildeling med den nøgle returnerer SESSION_CLOSED og udsteder ikke et andet nummer.
- Det automatiske tilbagetrækning er inaktivt for at undgå at tildele et andet nummer.
GETgetNumbersStatusTjek tilgængelighed+
Tilgængelige telefonnummer pr. service og land.
Parameter
| Parameter | Typ af | Beskrivelse |
|---|---|---|
api_key* | string | Brugerens personlige API-nøgle. |
country* | integer | Tag ID fra getCountries. |
* Anmodet parameter. i alle anmodninger passerer også handling=getNumbersStatus.
Eksempelforespørgsel
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())Svar
{
"go_0": 0
}- _0 suffix betyder et valg uden en bestemt operatør.
- Tilgængelighed refererer til leverandørens samlede pool. Den valgte kanal kontrolleres, når et nummer er tildelt.
GETgetStatusFå den nyeste kode+
Enkel anmodning om sessionstatus og den sidste SMS-kode. ledende zeros i koden er bevaret.
Parameter
| Parameter | Typ af | Beskrivelse |
|---|---|---|
api_key* | string | Brugerens personlige API-nøgle. |
id* | integer | Din session ID, der er modtaget, når numret er udstedt. |
* Anmodet parameter. i alle anmodninger passerer også handling=getStatus.
Eksempelforespørgsel
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)Svar
STATUS_WAIT_CODESTATUS_OK:001234STATUS_CANCELNO_ACTIVATION- Poll hver 20 sekunder. at læse en besked igen skaber ikke en anden betaling.
- Efter tilbagetrækning returneres den gamle kode ikke: getStatus venter på den næste SMS.
- Efter et antal uden SMS er slettet, getStatus og getSms Tilbage STATUS_CANCEL; getSmsFull returnerer den lukkede status, en tom telefon og en tom sms Liste af . REST /activations/{id} og /sms Tilbage 404 NO_ACTIVATION.
GETsetStatusStyring af sessioner+
Endes, annulleres eller genoptages i vente på SMS. Sessionen udløber.
Parameter
| Parameter | Typ af | Beskrivelse |
|---|---|---|
api_key* | string | Brugerens personlige API-nøgle. |
id* | integer | Din session ID, der er modtaget, når numret er udstedt. |
status* | integer | 3 – vent på den næste kode uden at forlænge sessionen; 6 – afsluttes efter SMS; 8 – annulleres umiddelbart. |
* Anmodet parameter. i alle anmodninger passerer også handling=setStatus.
Eksempelforespørgsel
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)Svar
ACCESS_RETRY_GETACCESS_ACTIVATIONACCESS_CANCEL- Retry venter på den næste kode inden for de oprindelige 20 minutter. udløbet og udløbetider ændres ikke.
- For status =3 Brug af Idempotency-Key: gentagelse af anmodningen vil ikke genstille den nye kode, der allerede er modtaget. SMS Det er stadig tilgængeligt.
- Annulleringen fjerner ikke de allerede opnåede belønninger.
- Kun nummer med en SMS-kode opbevares i historien. Annullerede og udløbet tal uden kode slettes.
GETgetRepeatNumberGør det samme nummer igen+
Åbner en ny session med et bestemt nummer fra din historie. Du kan vælge en anden tilgængelig service i det samme land.
Parameter
| Parameter | Typ af | Beskrivelse |
|---|---|---|
api_key* | string | Brugerens personlige API-nøgle. |
number* | string | Der er kun tal og en valgfri ledende + tilladt. |
service* | string | Tilgængelige servicekoder. svaret er begrænset til området for API-nøglen. |
session_duration | integer | Sessionen varer 20 minutter. pass 20 eller undgå denne parameter. |
with_operator | integer | 1 tilføjer operatørens ID til svaret; 0 eller udeladelse giver tre dele. |
ref | string | Offentlig kode for softwaret ejer: 5% for ham og 5% for gæsten. uden ref - 10% til gæsten. |
operator | string | Tag ID fra operators/getOperators (API). operator=1 · any/0 |
* Anmodet parameter. i alle anmodninger passerer også handling=getRepeatNumber.
Eksempelforespørgsel
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)Svar
ACCESS_NUMBER:43:380670000000NUMBER_IN_USE- Først, afslutte eller annullere din nuværende session. Hvis numret er travlt, genudskrivning udføres ikke.
- Den nye session modtager en ny ID og den nuværende pris. gamle SMS kopieres ikke ind i den. ref er indstillet igen.
- SMScash giver dig mulighed for at gentage kun tal fra denne kontohistorie.
- Nøglen til en slettet session fortsætter med at blive brugt: genoptagelse af tildeling med den nøgle returnerer SESSION_CLOSED og udsteder ikke et andet nummer.
GETgetSmsFullFå SMS som JSON+
Struktureret historie af alle meddelelser med ID, sender, kode, tekst og land, service og leverandør data.
Parameter
| Parameter | Typ af | Beskrivelse |
|---|---|---|
api_key* | string | Brugerens personlige API-nøgle. |
id* | integer | Din session ID, der er modtaget, når numret er udstedt. |
* Anmodet parameter. i alle anmodninger passerer også handling=getSmsFull.
Eksempelforespørgsel
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())Svar
{
"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"
}- Husk sms[].id for at behandle kun nye meddelelser.
- Numerisk status SMScash: 1 - aktiv, 6 - afsluttet, 8 - annulleret eller udløbet. status_name skiller mellem ventet, modtaget, afsluttet, annulleret, udløbet.
- Modtagne koder forbliver tilgængelige efter en session afsluttet. For store mængder, brug REST /activations/{id}/sms med after_id.
- Efter et antal uden SMS er slettet, getStatus og getSms Tilbage STATUS_CANCEL; getSmsFull returnerer den lukkede status, en tom telefon og en tom sms Liste af . REST /activations/{id} og /sms Tilbage 404 NO_ACTIVATION.
GETgetSmsFå SMS som tekststring+
Returnerer hele SMS-historien i stringformat til eksisterende kunder.
Parameter
| Parameter | Typ af | Beskrivelse |
|---|---|---|
api_key* | string | Brugerens personlige API-nøgle. |
id* | integer | Din session ID, der er modtaget, når numret er udstedt. |
* Anmodet parameter. i alle anmodninger passerer også handling=getSms.
Eksempelforespørgsel
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)Svar
STATUS_OK:2026-10-09T12:00:00Z|001234|Код подтверждения: 001234STATUS_WAIT_CODESTATUS_CANCEL- Meddelelsesformat: time-kode, meddelelsestext. Flere meddelelser er adskilt af en kolonne.
- Tekst SMS kan indeholde kolonner og vertikale barer. For pålidelig parsing, brug getSmsFull.
GETgetServicesTjenester+
Tilgængelige servicekoder. svaret er begrænset til området for API-nøglen.
Parameter
| Parameter | Typ af | Beskrivelse |
|---|---|---|
api_key* | string | Brugerens personlige API-nøgle. |
country | integer | Tag ID fra getCountries. |
* Anmodet parameter. i alle anmodninger passerer også handling=getServices.
Eksempelforespørgsel
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())Svar
{
"go": {
"name": "Google",
"code": "go"
}
}- Servicedirektorien deles over hele leverandøren.Numret tilgængelighed kontrolleres separat.
GETgetCountriesLande+
ID'er, navne og opkaldskoder for lande i den valgte kanal.
Parameter
| Parameter | Typ af | Beskrivelse |
|---|---|---|
api_key* | string | Brugerens personlige API-nøgle. |
* Anmodet parameter. i alle anmodninger passerer også handling=getCountries.
Eksempelforespørgsel
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())Svar
{
"86": {
"id": 86,
"name": "Italy",
"phone_code": "39"
}
}GETgetOperatorsOperatørerne+
Tilgængelige operatører: API-ID, navn og tilbageholdelsesperiode.
Parameter
| Parameter | Typ af | Beskrivelse |
|---|---|---|
api_key* | string | Brugerens personlige API-nøgle. |
country | integer | Tag ID fra getCountries. |
operator | string | Tag ID fra operators/getOperators (API). operator=1 · any/0 |
* Anmodet parameter. i alle anmodninger passerer også handling=getOperators.
Eksempelforespørgsel
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())Svar
{
"1": {
"id": 1,
"provider_id": 1,
"operator": 1,
"name": "Оператор 1",
"earnings_hold_days": 45
}
}- Tag ID fra operators/getOperators (API).
GETgetRewardsBelønning for SMS+
Priser afhænger af landet. Alle tabelmængder er pr. betalte SMS.
Parameter
| Parameter | Typ af | Beskrivelse |
|---|---|---|
api_key* | string | Brugerens personlige API-nøgle. |
country | integer | Tag ID fra getCountries. |
service | string | Tilgængelige servicekoder. svaret er begrænset til området for API-nøglen. |
operator | string | Tag ID fra operators/getOperators (API). operator=1 · any/0 |
* Anmodet parameter. i alle anmodninger passerer også handling=getRewards.
Eksempelforespørgsel
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())Svar
{
"59": {
"vi": {
"1": "0.01000000",
"3": "0.00500000"
}
}
}{}- USD-tariffemængder returneres som præcise tiende strimler med 8 tiende pladser:
- Tilgængelige leverandører til din nøgle.
- country ID → service code → operator ID → reward (USD)
GETgetBalanceBrugerens saldo+
Additional SMScash: Tilgængelig balance, der tager hensyn til akrualer, referral bonusser og betalingssøgninger.
Parameter
| Parameter | Typ af | Beskrivelse |
|---|---|---|
api_key* | string | Brugerens personlige API-nøgle. |
* Anmodet parameter. i alle anmodninger passerer også handling=getBalance.
Eksempelforespørgsel
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)Svar
ACCESS_BALANCE:0.00- getBalance returnerer den tilgængelige USD-balance med op til 8 decimalpladser.
- Kun penge, hvis tilbageholdelsesperiode er udløbet, kan hæves.
GETgetHoldBalanceTilbageholdt+
Efter modtagelse af en SMS tilbageholdes indtjeningen i den periode, leverandøren har fastsat. På den angivne dato bliver beløbet automatisk tilgængeligt for hævning.
Parameter
| Parameter | Typ af | Beskrivelse |
|---|---|---|
api_key* | string | Brugerens personlige API-nøgle. |
* Anmodet parameter. i alle anmodninger passerer også handling=getHoldBalance.
Eksempelforespørgsel
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)Svar
ACCESS_HOLD_BALANCE:34.50000001- SMScash · getHoldBalance · USD · 8
- Kun penge, hvis tilbageholdelsesperiode er udløbet, kan hæves.
Svarkoder og gentagne anmodninger
Ind handler_api.php virksomhedsresultater kommer normalt med HTTP 200. Kontroller kroppens tekst. kataloger og getSmsFull tilbage JSON hvis der er vellykket; fejl er altid tekst.
| Kode | HTTP | Årsagen og næste skridt |
|---|---|---|
TARIFF_NOT_CONFIGURED | 200 | Renterne er endnu ikke fastlagtUddeling af nummer vil begynde, når SMS-præmier er konfigureret. |
COUNTRY_BLOCKED | 200 | Det er blokeret at tildele nummer til dette land.Vælg et andet land. |
BAD_SERVICE | 200 | Uddeling af nummer til denne tjeneste er blokeret.Vælg en anden service. |
PROVIDER_NOT_READY | 200 | Uddeling af nummer er midlertidigt utilgængeligUddyb API katalogerne. |
BAD_KEY | 400 | Nej api_key eller ugyldig format.Tjek nøglen i anmodningen. |
INVALID_API_KEY | 401 | Nøglen er ukendt, tilbagekaldt eller kontoen er slået af.Skab en gyldig API-nøgle. |
BAD_COUNTRY | 400 | Det er et positivt antal, der mangler eller ikke.Tag ID fra getCountries. |
BAD_SESSION_DURATION | 400 | Telefonnummerene udstedes i 20 minutter.Korrekt session_duration. |
BAD_REQUEST | 400 | Ugyldig parameter eller Idempotency-Key.Vælg venligst din anmodning. |
BAD_SERVICE / BAD_OPERATOR / INVALID_PROVIDER | 200 | ukendt eller disabled katalog element.Uddyb API katalogerne. |
BAD_NUMBER | 200 | Forkert antal format.Giv det nummer i digter. |
BAD_ACTION / BAD_STATUS | 200 | ukendt kommando, ID eller operation.Tjek indstillingerne. |
EMPTY_POOL | 200 | Der er i øjeblikket ingen matchende telefonnummer til rådighed.Gentag efter 10-30 sekunder eller ændre filtre. |
NUMBER_IN_USE | 200 | Et bestemt antal er besat af en aktiv session.Afslut din session eller vælg et andet nummer. |
NO_ACTIVATION | 200 | Sessionen eller det tidligere nummer tilhører ikke din konto.Tjek ID og nøgle. |
SESSION_CLOSED / SMS_REQUIRED | 200 | Den offentlige overgang er for øjeblikket ikke tilgængelig.Se tilstanden og tilgængeligheden af SMS. |
SCOPE_BLOCKED | 200 | Tjenesten, landet eller leverandøren er ikke tilladt for nøglen.Opdaterer API-nøglen omfang. |
IDEMPOTENCY_CONFLICT | 200 | Denne spørgeskode er allerede forbundet med andre parametre.For en ny operation, skab en anden Idempotency-Key. |
BAD_REF / SELF_REF | 400 | Softwaren er ukendt, disabled eller tilhører arbejdstageren selv.Pas på softwares ejerens kode. |
INTERNAL_ERROR | 500 | Tids- eller serverfejl.Gentag med en forsinkelse og den samme Idempotency-Key. |
ALLOCATION_PENDING | 200 | Nummertildeling er allerede i fremskridt. Prøv på nytt med det samme Idempotency-Key.Nummertildeling er allerede i fremskridt. Prøv på nytt med det samme Idempotency-Key. |
ALLOCATION_UNCERTAIN | 200 | Det automatiske tilbagetrækning er inaktivt for at undgå at tildele et andet nummer.Det automatiske tilbagetrækning er inaktivt for at undgå at tildele et andet nummer. |
Resten returnerer et objekt {"error":{"code":"…","message":"…"}} HTTP-status er 400/401/403/404/409/503.
{
"error": {
"code": "BAD_REQUEST",
"message": "Tjek de anmodningssider.",
"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.Tilbud til nye integrationer
USD-tariffemængder returneres som præcise tiende strimler med 8 tiende pladser: 0.00300000 USD.
Valutaen er USD. Forespørgsels- og svarskemaer er tilgængelige i OpenAPI.
/api/v1/catalogTjenester og lande/api/v1/tariffsSMS belønning pr. land/api/v1/offersPris og belønning/api/v1/servicesDirektoren/api/v1/countriesDirektoren/api/v1/operatorsDirektoren/api/v1/availability?country=1Tilgængelighed nummer/api/v1/activationsNy session/api/v1/activations/batch?ids=42,43Kontrollér flere numre/api/v1/activationsSidste 200 sessioner: scope=historie, ventet eller alt/api/v1/activations/{id}Session og meddelelser/api/v1/activations/{id}/sms?after_id=0&limit=100Ny SMS med kursor/api/v1/activations/{id}/retryVenter på SMS/api/v1/activations/{id}/finishKomplet/api/v1/activations/{id}/cancelAfbestillinger/api/v1/activations/repeatAntal afrejse/api/v1/keysAPI Nøgler/api/v1/keysSkab en nøgle/api/v1/keys/{id}Ændre navn eller politik/api/v1/keys/{id}Tilbakeklærte nøgler/api/v1/referralsReferencekode og indtjening/api/v1/summaryBalance og sammendrag/api/v1/balanceTilbageholdt/api/v1/ledgerIndtjening ledger/api/v1/withdrawalsBetalingsforespørgsler/api/v1/withdrawalsSkab en anmodning/api/v1/statisticsGenerelle statistikker/api/v1/earnings/holdsTilbageholdelse af indtjeningFå kun nye 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": "Kode: 001234",
"sender": "Service",
"received_at": "2026-10-09T12:00:00Z"
}
],
"next_cursor": 101,
"has_more": false
}Lagre next_cursor og send den på, som after_id. Hvis has_more=true, den næste side kan læses straks. begrænsning: 1–200. Sessioner og SMS Der er kun tilgængelige for ejerne.