API documentatie
Nummers, berichten en inkomsten, rechtstreeks van uw app.
Begin met één verzoek
Creëer een API-toets in je dashboard, krijg een nummer en controleer elke 20 seconden voor berichten.Payment is gecrediteerd wanneer een SMS met een code aankomt; het lezen ervan opnieuw beïnvloedt uw balans niet.
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}'Alternatieve compatibele interface adres: /handler_api.php. bestaande REST-integraties blijven werken.
Verzoekgenerator
Idempotency-Key: UUID · POST · 8–128
Automatische keuze: de meeste codes in het afgelopen uur, daarna 24 uur. Geen nummers: volgende operator.
curl --max-time 15 --fail-with-body -X POST 'https://smscash.org/api/v1/activations' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: request-unique-001' \
--data '{"service":"go","country":86}'package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
payload := []byte("{\"service\":\"go\",\"country\":86}")
req, err := http.NewRequest("POST", "https://smscash.org/api/v1/activations", bytes.NewReader(payload))
if err != nil { panic(err) }
req.Header.Set("Authorization", "Bearer " + os.Getenv("SMSCASH_API_KEY"))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Idempotency-Key", "request-unique-001")
client := &http.Client{Timeout: 15 * time.Second, CheckRedirect: func(_ *http.Request, _ []*http.Request) error { return http.ErrUseLastResponse }}
res, err := client.Do(req)
if err != nil { panic(err) } // Keep the same operation key after a network error.
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil { panic(err) }
if res.StatusCode >= 300 {
fmt.Fprintf(os.Stderr, "HTTP %d, request_id=%s\n%s\n", res.StatusCode, res.Header.Get("X-Request-ID"), body)
os.Exit(1)
}
fmt.Println(string(body))
}// Node.js 18+: set SMSCASH_API_KEY in your environment.
const response = await fetch("https://smscash.org/api/v1/activations", {
method: "POST",
headers: {
Authorization: 'Bearer ' + process.env.SMSCASH_API_KEY,
'Content-Type': 'application/json',
'Idempotency-Key': "request-unique-001",
},
body: JSON.stringify({
"service": "go",
"country": 86
}),
signal: AbortSignal.timeout(15000),
redirect: 'error',
});
const result = await response.json();
if (!response.ok) {
const error = result.error || {};
console.error(response.status, error.code, error.hint, error.request_id);
throw new Error(error.message || 'API error');
}
console.log(result);
// SMS codes are strings: keep leading zeros. Never retry writes automatically.import json
import os
import urllib.error
import urllib.request
class NoRedirect(urllib.request.HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
return None
headers = {
'Authorization': 'Bearer ' + os.environ['SMSCASH_API_KEY'],
'Content-Type': 'application/json',
'Idempotency-Key': "request-unique-001",
}
request = urllib.request.Request(
"https://smscash.org/api/v1/activations",
headers=headers,
data="{\"service\":\"go\",\"country\":86}".encode('utf-8'),
method="POST",
)
try:
with urllib.request.build_opener(NoRedirect).open(request, timeout=15) as response:
result = json.load(response)
print(result)
except urllib.error.HTTPError as error:
details = json.load(error).get('error', {})
print(error.code, details.get('code'), details.get('hint'), details.get('request_id'))
raise
# No automatic retries; SMS codes remain strings.De sleutel wordt niet opgeslagen. Deze controle geeft geen nummers uit.
De rest van nieuwe integraties
Diensten en landen
Kies een service en land. Betaling per SMS hangt af van het land.
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)
Neem een nummer
POST /api/v1/activations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Idempotency-Key: request-unique-001
{
"service": "go",
"country": 86
}Automatische keuze: de meeste codes in het afgelopen uur, daarna 24 uur. Geen nummers: volgende operator.
201: new session · 200: replay of the same operation
service + country OR offer_id · duration_minutes: 20
ref: software owner code (optional)
operator: public ID (e.g. 1 for Operator 1), optional · any/0: automatic
country: integer · service: string · SMS code: stringHet nummer is geldig voor 20 minuten van. SMS Elke keer wordt gecontroleerd 20 seconden. u kunt onmiddellijk annuleren.
Meerdere nummers controleren
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 · Geblokkeerd
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 — Beschikbaar; held_balance — Geblokkeerd. USD · 8
Je kunt alleen geld opnemen waarvan de wachttijd is verstreken.
Kant-en-klare clients
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.phpDe persoonlijke API-sleutel van de gebruiker.
Kies een service en land. Betaling per SMS hangt af van het land.
| Code | Beschrijving |
|---|---|
getNumber / getNumberV2 | Neem een nummer |
getStatus / getStatusV2 | Krijg de nieuwste code |
setStatus / finishActivation / cancelActivation | Management Sessie |
getPrices / getNumbersStatus | Controleer beschikbaarheid |
getRewards (SMScash) | Beloning voor SMS |
getServicesList / getServices | Diensten |
getCountries / getOperators | Diensten en landen |
getActiveActivations | Zitting |
getBalance | Gebruikerssaldo |
getHoldBalance (SMScash) | Geblokkeerd |
cost = 0 USD · activationCost = 0 USDreward — Beloning voor 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.Het nummer is geldig voor 20 minuten van. SMS Elke keer wordt gecontroleerd 20 seconden. u kunt onmiddellijk annuleren.
Authentificatie en retries
REST: Hoofdstuk Authorization: Bearer YOUR_API_KEY. Compatibele interface : Parameters api_key en actionGebruik HTTPS
Om API-toets te beheren, voer uw account in.
API-verzoeken frequentie en het aantal telefoonnummers zijn onbeperkte. er zijn geen dagelijkse of uurtijdse quotaties.
Het nummer is geldig voor 20 minuten van. SMS Elke keer wordt gecontroleerd 20 seconden. u kunt onmiddellijk annuleren.
In de rest, een unieke Idempotency-Key is vereist voor nummerverdeling, herhaalde verdeling, retry en betaling verzoeken. het is optioneel maar aanbevolen in handler_api.php. hergebruik de sleutel bij het retryen van een netwerkverzoek; gebruik een nieuwe sleutel voor een nieuwe operatie.
API sleutelgebied
U kunt een sleutel beperken tot specifieke diensten, landen en leveranciers. lege lijsten toestaan alle beschikbare opties.
{
"label": "Mijn software",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} De naam en de politiek veranderen volledig. het geheim wordt alleen getoond wanneer het gemaakt is.
10% in totaal. 5% + 5% met software code.
Bij het uitgeven van een nummer, geef dan ref eigenaar van de software. de aanvraag is toegelaten door de sleutel van de gebruiker. de code staat in de "Referrals" sectie en in de GET /api/v1/referrals → software_ref.
| Verzoek | Inviteer | Software |
|---|---|---|
| Geen ref | 10% | — |
| Met ref | 5% | 5% |
| Met ref, geen referrer | — | 5% |
De platform betaalt de bonus zonder de winst van de gebruiker te verminderen.De software-eigenaar en de referrer kunnen dezelfde persoon zijn.
Termen worden vastgesteld wanneer een sessie wordt gecreëerd; lezen SMS en retry Wees ze niet veranderd. pass ref opnieuw voor een nieuwe herhaalde sessie. in de tariefberekening, een gebruiker beloning van USD 0.003 Geeft USD 0.00015 elk aan de software-eigenaar en referrer. de totale bonus is USD 0.00030.
API Command
11 XVBC-stijl methoden plus uw SMScash-balans.
GETgetNumberNeem een nummer+
Het salaris en de referral ontvangers worden vastgesteld bij de toewijzing; de salaris wordt gecrediteerd wanneer een SMS met een code aankomt.
Parameters
| Parameters | Type | Beschrijving |
|---|---|---|
api_key* | string | De persoonlijke API-sleutel van de gebruiker. |
service* | string | De antwoord is beperkt tot het gebied van de API-toets. |
country* | integer | Neem ID van getCountries. |
operator | string | Neem ID van operators/getOperators (API). operator=1 · any/0 |
session_duration | integer | De sessie duurt 20 minuten. pass 20 of om deze parameter te missen. |
with_operator | integer | 1 voegt het operator-ID aan het antwoord toe; 0 of weglaten geeft drie segmenten terug. |
ref | string | Public code van de software eigenaar: 5% Voor hem en 5% Voor de gast, zonder ref - 10% aan de gast. |
* Verplichte parameter. in alle verzoeken ook pass action=getNumber.
Voorbeeldverzoek
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)Antwoord
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- Automatische keuze: de meeste codes in het afgelopen uur, daarna 24 uur. Geen nummers: volgende operator.
- Pass Idempotency-Key: hetzelfde verzoek met dezelfde sleutel terugkeert de vorige sessie. Verandering van de parameters IDEMPOTENCY_CONFLICT.
- Een numerisch land zonder een pool geeft EMPTY_POOL; het verkeerde land formaat is BAD_COUNTRY.
- De sleutel van een verwijderde sessie blijft gebruikt: het herspel van de toewijzing met die sleutel returns SESSION_CLOSED en geeft geen ander nummer uit.
- Het toewijzingresultaat is onbevestigd. Automatische terugtrek is uitgeschakeld om een tweede getal te vermijden.
GETgetNumbersStatusControleer beschikbaarheid+
Telefoonnummer beschikbaar per dienst en land.
Parameters
| Parameters | Type | Beschrijving |
|---|---|---|
api_key* | string | De persoonlijke API-sleutel van de gebruiker. |
country* | integer | Neem ID van getCountries. |
* Verplichte parameter. in alle verzoeken ook pass action=getNumbersStatus.
Voorbeeldverzoek
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())Antwoord
{
"go_0": 0
}- De _0 suffix betekent een keuze zonder een specifieke operator.
- Beschikbaarheid verwijst naar de totale pool van de leverancier.De geselecteerde kanaal wordt gecontroleerd wanneer een nummer wordt toegewezen.
GETgetStatusKrijg de nieuwste code+
Eenvoudige aanvraag voor de sessiestatus en de laatste SMS-code. Leading zeros in de code worden bewaard.
Parameters
| Parameters | Type | Beschrijving |
|---|---|---|
api_key* | string | De persoonlijke API-sleutel van de gebruiker. |
id* | integer | ID van uw sessie, ontvangen wanneer het nummer is uitgegeven. |
* Verplichte parameter. in alle verzoeken ook pass action=getStatus.
Voorbeeldverzoek
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)Antwoord
STATUS_WAIT_CODESTATUS_OK:001234STATUS_CANCELNO_ACTIVATION- Poll elke 20 Een bericht opnieuw lezen creëert geen andere betaling.
- Na terugtrek wordt de oude code niet teruggekeerd: getStatus wacht op de volgende SMS.
- Na een aantal zonder SMS wordt verwijderd, getStatus en getSms terugkeer STATUS_CANCEL; getSmsFull teruggeeft de gesloten status, een leeg telefoon en een leeg sms lijstjes . REST /activations/{id} en /sms terugkeer 404 NO_ACTIVATION.
GETsetStatusManagement Sessie+
Uiteindelijk, annuleert of herstelt u wachten op SMS. De sessie is uitgestorven.
Parameters
| Parameters | Type | Beschrijving |
|---|---|---|
api_key* | string | De persoonlijke API-sleutel van de gebruiker. |
id* | integer | ID van uw sessie, ontvangen wanneer het nummer is uitgegeven. |
status* | integer | 3 — wacht op de volgende code zonder de sessie te verlengen; 6 — eindigt na SMS; 8 — onmiddellijk annuleert. |
* Verplichte parameter. in alle verzoeken ook pass action=setStatus.
Voorbeeldverzoek
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)Antwoord
ACCESS_RETRY_GETACCESS_ACTIVATIONACCESS_CANCEL- Retry wacht op de volgende code binnen de oorspronkelijke 20 minuten. de uitgang en uitgangstiden veranderen niet.
- Voor de status =3 Gebruik Idempotency-Key: herhalen van de aanvraag zal de nieuwe code niet herstelt die al is ontvangen. SMS blijft beschikbaar.
- De annulering verwijdert niet de reeds verdiende beloningen.
- Alleen nummers met een SMS-code worden in de geschiedenis bewaard. geannuleerde en uitgestelde nummers zonder een code worden verwijderd.
GETgetRepeatNumberZet hetzelfde nummer weer+
Open een nieuwe sessie met een specifiek nummer uit je geschiedenis. u kunt een andere beschikbaar service in hetzelfde land selecteren.
Parameters
| Parameters | Type | Beschrijving |
|---|---|---|
api_key* | string | De persoonlijke API-sleutel van de gebruiker. |
number* | string | Alleen nummers en een optionele leiding + zijn toegestaan. |
service* | string | De antwoord is beperkt tot het gebied van de API-toets. |
session_duration | integer | De sessie duurt 20 minuten. pass 20 of om deze parameter te missen. |
with_operator | integer | 1 voegt het operator-ID aan het antwoord toe; 0 of weglaten geeft drie segmenten terug. |
ref | string | Public code van de software eigenaar: 5% Voor hem en 5% Voor de gast, zonder ref - 10% aan de gast. |
operator | string | Neem ID van operators/getOperators (API). operator=1 · any/0 |
* Verplichte parameter. in alle verzoeken ook pass action=getRepeatNumber.
Voorbeeldverzoek
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)Antwoord
ACCESS_NUMBER:43:380670000000NUMBER_IN_USE- Eerst, beëindigen of annuleren van uw huidige sessie.Als het nummer druk is, wordt de heruitgang niet uitgevoerd.
- De nieuwe sessie ontvangt een nieuwe ID en de huidige tarief. oude SMS wordt niet gecopierd. ref wordt opnieuw ingesteld.
- SMScash maakt het mogelijk om alleen nummers uit de geschiedenis van dit account te herhalen.
- De sleutel van een verwijderde sessie blijft gebruikt: het herspel van de toewijzing met die sleutel returns SESSION_CLOSED en geeft geen ander nummer uit.
GETgetSmsFullSMS als JSON+
Structuurd geschiedenis van alle berichten met ID, verzender, code, tekst en land, service en leverancier gegevens.
Parameters
| Parameters | Type | Beschrijving |
|---|---|---|
api_key* | string | De persoonlijke API-sleutel van de gebruiker. |
id* | integer | ID van uw sessie, ontvangen wanneer het nummer is uitgegeven. |
* Verplichte parameter. in alle verzoeken ook pass action=getSmsFull.
Voorbeeldverzoek
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())Antwoord
{
"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"
}- Vergeet sms[].id om alleen nieuwe berichten te verwerken.
- Numerische status SMScash: 1 - actief, 6 - voltooid, 8 - geannuleerd of uitgesteld. status_name onderscheidt tussen wachten, ontvangen, voltooid, geannuleerd, uitgesteld.
- Ontvangen codes blijven beschikbaar na een sessie sloten. Voor grote volume gebruik REST /activations/{id}/sms met after_id.
- Na een aantal zonder SMS wordt verwijderd, getStatus en getSms terugkeer STATUS_CANCEL; getSmsFull teruggeeft de gesloten status, een leeg telefoon en een leeg sms lijstjes . REST /activations/{id} en /sms terugkeer 404 NO_ACTIVATION.
GETgetSmsSMS als tekstlijn ontvangen+
Terug de hele SMS-historie in stringformaten voor bestaande klanten.
Parameters
| Parameters | Type | Beschrijving |
|---|---|---|
api_key* | string | De persoonlijke API-sleutel van de gebruiker. |
id* | integer | ID van uw sessie, ontvangen wanneer het nummer is uitgegeven. |
* Verplichte parameter. in alle verzoeken ook pass action=getSms.
Voorbeeldverzoek
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)Antwoord
STATUS_OK:2026-10-09T12:00:00Z|001234|Код подтверждения: 001234STATUS_WAIT_CODESTATUS_CANCEL- Het berichtformaat: tijdcode, tekst.Veel berichten worden gescheiden door een kolom.
- De tekst SMS kan zelf kolommen en verticale bars bevatten. voor betrouwbare parsing, gebruik getSmsFull.
GETgetServicesDiensten+
De antwoord is beperkt tot het gebied van de API-toets.
Parameters
| Parameters | Type | Beschrijving |
|---|---|---|
api_key* | string | De persoonlijke API-sleutel van de gebruiker. |
country | integer | Neem ID van getCountries. |
* Verplichte parameter. in alle verzoeken ook pass action=getServices.
Voorbeeldverzoek
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())Antwoord
{
"go": {
"name": "Google",
"code": "go"
}
}- De service directory wordt gedeeld door de leverancier. nummer beschikbaarheid wordt afzonderlijk gecontroleerd.
GETgetCountriesLanden+
ID's, namen en oproepcodes voor landen in het geselecteerde kanaal.
Parameters
| Parameters | Type | Beschrijving |
|---|---|---|
api_key* | string | De persoonlijke API-sleutel van de gebruiker. |
* Verplichte parameter. in alle verzoeken ook pass action=getCountries.
Voorbeeldverzoek
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())Antwoord
{
"86": {
"id": 86,
"name": "Italy",
"phone_code": "39"
}
}GETgetOperatorsOperator+
Beschikbare operators: API-ID, naam en inhoudingsperiode.
Parameters
| Parameters | Type | Beschrijving |
|---|---|---|
api_key* | string | De persoonlijke API-sleutel van de gebruiker. |
country | integer | Neem ID van getCountries. |
operator | string | Neem ID van operators/getOperators (API). operator=1 · any/0 |
* Verplichte parameter. in alle verzoeken ook pass action=getOperators.
Voorbeeldverzoek
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())Antwoord
{
"1": {
"id": 1,
"provider_id": 1,
"operator": 1,
"name": "Оператор 1",
"earnings_hold_days": 45
}
}- Neem ID van operators/getOperators (API).
GETgetRewardsBeloning voor SMS+
Raten zijn afhankelijk van het land.Alle tabellen zijn per betaald SMS.
Parameters
| Parameters | Type | Beschrijving |
|---|---|---|
api_key* | string | De persoonlijke API-sleutel van de gebruiker. |
country | integer | Neem ID van getCountries. |
service | string | De antwoord is beperkt tot het gebied van de API-toets. |
operator | string | Neem ID van operators/getOperators (API). operator=1 · any/0 |
* Verplichte parameter. in alle verzoeken ook pass action=getRewards.
Voorbeeldverzoek
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())Antwoord
{
"59": {
"vi": {
"1": "0.01000000",
"3": "0.00500000"
}
}
}{}- De USD tariefbelangen worden teruggekeerd als exacte decimallijnen met 8 decimal plaatsen:
- De aanbieders die beschikbaar zijn voor uw sleutel.
- country ID → service code → operator ID → reward (USD)
GETgetBalanceGebruikerssaldo+
Additional SMScash: beschikbare balans rekening houdend met accruals, referral bonussen en betalingsverzoeken.
Parameters
| Parameters | Type | Beschrijving |
|---|---|---|
api_key* | string | De persoonlijke API-sleutel van de gebruiker. |
* Verplichte parameter. in alle verzoeken ook pass action=getBalance.
Voorbeeldverzoek
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)Antwoord
ACCESS_BALANCE:0.00- getBalance geeft de beschikbaar USD-balans met maximaal 8 decimal plaatsen terug.
- Je kunt alleen geld opnemen waarvan de wachttijd is verstreken.
GETgetHoldBalanceGeblokkeerd+
Na ontvangst van een SMS worden de inkomsten vastgehouden gedurende de termijn van de leverancier. Op de aangegeven datum wordt het bedrag automatisch beschikbaar voor opname.
Parameters
| Parameters | Type | Beschrijving |
|---|---|---|
api_key* | string | De persoonlijke API-sleutel van de gebruiker. |
* Verplichte parameter. in alle verzoeken ook pass action=getHoldBalance.
Voorbeeldverzoek
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)Antwoord
ACCESS_HOLD_BALANCE:34.50000001- SMScash · getHoldBalance · USD · 8
- Je kunt alleen geld opnemen waarvan de wachttijd is verstreken.
Antwoordcode en herhaalde verzoeken
In handler_api.php zakelijke resultaten komen meestal met HTTP 200. Check de tekst van het lichaam. Directies en getSmsFull retour JSON als het succesvol is; fouten zijn altijd tekst.
| Code | HTTP | Oorzaak en volgende stap |
|---|---|---|
TARIFF_NOT_CONFIGURED | 200 | Raten zijn nog niet vastgesteldHet nummerverdeling begint zodra SMS-beloningen zijn ingesteld. |
COUNTRY_BLOCKED | 200 | Het nummerverdeling voor dit land is geblokkeerd.Kies een ander land. |
BAD_SERVICE | 200 | Het nummer voor deze dienst is geblokkeerd.Kies een andere service. |
PROVIDER_NOT_READY | 200 | Het aantal toewijzing is tijdelijk niet beschikbaarVerfrissing van de API catalogus. |
BAD_KEY | 400 | Nee api_key of ongeldige formaat.Bekijk de sleutel in de aanvraag. |
INVALID_API_KEY | 401 | De sleutel is onbekend, geannuleerd of het account is uitgeschakeld.Een geldig API-toets maken. |
BAD_COUNTRY | 400 | Het land is een positieve cijfer of niet.Neem ID van getCountries. |
BAD_SESSION_DURATION | 400 | De telefoonnummers worden gedurende 20 minuten uitgegeven.Korrektie session_duration. |
BAD_REQUEST | 400 | Ongeldige parameter of Idempotency-Key.Laat uw verzoek corrigeren. |
BAD_SERVICE / BAD_OPERATOR / INVALID_PROVIDER | 200 | Onbekende of ontbrekende directory item.Verfrissing van de API catalogus. |
BAD_NUMBER | 200 | Onjuiste getal formaat.Geef het nummer in cijfers. |
BAD_ACTION / BAD_STATUS | 200 | Onbekende bestelling, ID of operatie.Bekijk de instellingen. |
EMPTY_POOL | 200 | Op dit moment zijn geen matchende telefoonnummers beschikbaar.Herhaal na 10-30 seconden of filter wijzigen. |
NUMBER_IN_USE | 200 | Een specifiek aantal wordt bezet door een actieve sessie.Uiteindelijk sluit u uw sessie of selecteer een andere nummer. |
NO_ACTIVATION | 200 | De sessie of het vorige nummer behoort niet tot uw account.Check ID en sleutel. |
SESSION_CLOSED / SMS_REQUIRED | 200 | De overgang van de staat is momenteel niet beschikbaar.Controleer de omstandigheden en beschikbaarheid van SMS. |
SCOPE_BLOCKED | 200 | De dienst, land of leverancier is niet toegestaan voor de sleutel.Update de API-toets van de oppervlakte. |
IDEMPOTENCY_CONFLICT | 200 | Deze zoekopdracht is al geassocieerd met andere parameters.Voor een nieuwe operatie, creëer een andere Idempotency-Key. |
BAD_REF / SELF_REF | 400 | De softwarecode is onbekend, ontbreekt of behoort tot de gebruiker zelf.Ga naar de code van de software-eigenaar. |
INTERNAL_ERROR | 500 | Voorlopige server of leverancierfout.Herhaal met een vertraging en dezelfde Idempotency-Key. |
ALLOCATION_PENDING | 200 | Het nummer toewijzing is al in beweging. Retry met dezelfde Idempotency-Key.Het nummer toewijzing is al in beweging. Retry met dezelfde Idempotency-Key. |
ALLOCATION_UNCERTAIN | 200 | Het toewijzingresultaat is onbevestigd. Automatische terugtrek is uitgeschakeld om een tweede getal te vermijden.Het toewijzingresultaat is onbevestigd. Automatische terugtrek is uitgeschakeld om een tweede getal te vermijden. |
REST geeft een object terug {"error":{"code":"…","message":"…"}} en de reguliere HTTP-status 400/401/403/404/409/503.
{
"error": {
"code": "BAD_REQUEST",
"message": "Controleer de aanvraagvelden.",
"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.De rest van nieuwe integraties
De USD tariefbelangen worden teruggekeerd als exacte decimallijnen met 8 decimal plaatsen: 0.00300000 USD.
De balanswissel is USD. aanvraag- en reactieschema's zijn beschikbaar in OpenAPI.
/api/v1/catalogDiensten en landen/api/v1/tariffsSMS beloningsraten per land/api/v1/offersRaten en beloningen/api/v1/servicesDirectie/api/v1/countriesDirectie/api/v1/operatorsDirectie/api/v1/availability?country=1beschikbaarheid nummer/api/v1/activationsNieuwe sessie/api/v1/activations/batch?ids=42,43Meerdere nummers controleren/api/v1/activationsDe laatste 200 sessies: scope = geschiedenis, wachten of alles/api/v1/activations/{id}Sessie en berichten/api/v1/activations/{id}/sms?after_id=0&limit=100Nieuw SMS Met cursor/api/v1/activations/{id}/retryWacht op SMS/api/v1/activations/{id}/finishvoltooien/api/v1/activations/{id}/cancelannuleren/api/v1/activations/repeatNummer reissue/api/v1/keysAPI Keys/api/v1/keysEen sleutel maken/api/v1/keys/{id}Naam of beleid wijzigen/api/v1/keys/{id}Kluid terug/api/v1/referralsReferral code en winst/api/v1/summaryBalance en samenvatting/api/v1/balanceGeblokkeerd/api/v1/ledgerWinstverlener Leder/api/v1/withdrawalsVerzoeken om betaling/api/v1/withdrawalsEen verzoek maken/api/v1/statisticsAlgemene statistieken/api/v1/earnings/holdsWachttijd voor inkomstenAlleen nieuwe ontvangen 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
}Bewaar next_cursor en overgeven het als after_id. Als has_more=true, de volgende pagina kan onmiddellijk worden gelezen. limiet: 1–200. Sessies en SMS beschikbaar zijn alleen voor de eigenaar.