API-dokumentti
Luvut, viestit ja tulot suoraan sovelluksesta.
Aloita yhdellä pyynnöstä
Luo API- avain dashboardissa, saat numero ja tarkista viestit 20 sekunnin välein. Maksu luotetaan, kun SMS koodilla saapuu; lukeminen uudelleen ei vaikuta tasapainoosi.
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}'Vaihtoehtoinen yhteensopiva käyttöliittymän osoite: /handler_api.php. olemassa olevat REST-integratiot toimivat edelleen.
Pyyntöjen rakentaja
Idempotency-Key: UUID · POST · 8–128
Automaattinen valinta: eniten koodeja viime tunnin, sitten 24 tunnin aikana. Ei numeroita: seuraava operaattori.
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.Avainta ei tallenneta. Tämä tarkistus ei myönnä numeroita.
Jäljelle jäävät uudet integraatiot
Palvelut ja maat
Valitse palvelu ja maa. Maksaminen SMS:llä riippuu maasta.
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)
Saa numero
POST /api/v1/activations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Idempotency-Key: request-unique-001
{
"service": "go",
"country": 86
}Automaattinen valinta: eniten koodeja viime tunnin, sitten 24 tunnin aikana. Ei numeroita: seuraava operaattori.
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: stringLuvut ovat voimassa 20 minuuttia. SMS tarkistetaan 20 sekunnin välein. voit peruuttaa välittömästi.
Tarkista useita numeroita
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 · Pidätetty
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 — Käytettävissä; held_balance — Pidätetty. USD · 8
Voit nostaa vain varoja, joiden pidätysaika on päättynyt.
Valmiit asiakasohjelmat
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.phpKäyttäjän henkilökohtainen API-avain.
Valitse palvelu ja maa. Maksaminen SMS:llä riippuu maasta.
| Koodi | kuvaus |
|---|---|
getNumber / getNumberV2 | Saa numero |
getStatus / getStatusV2 | Saat viimeisimmän koodin |
setStatus / finishActivation / cancelActivation | Hallinta istunto |
getPrices / getNumbersStatus | Tarkista saatavuus |
getRewards (SMScash) | Palkinto SMS:stä |
getServicesList / getServices | Palvelut |
getCountries / getOperators | Palvelut ja maat |
getActiveActivations | istuntoja |
getBalance | Käyttäjän saldo |
getHoldBalance (SMScash) | Pidätetty |
cost = 0 USD · activationCost = 0 USDreward — Palkinto SMS:stä
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.Luvut ovat voimassa 20 minuuttia. SMS tarkistetaan 20 sekunnin välein. voit peruuttaa välittömästi.
Autehtävä ja peruuttaminen
REST: Pääkirjoitus Authorization: Bearer YOUR_API_KEY. Yhteensopiva käyttöliittymä: Parametrit api_key ja actionKäytä HTTPS:tä
Jotta hallita API-tunnuksia, kirjaudu tilisi.
API-pyyntötaajuus ja puhelinnumeroiden määrä ovat rajattomia. ei ole päivittäisiä tai tuntia.
Luvut ovat voimassa 20 minuuttia. SMS tarkistetaan 20 sekunnin välein. voit peruuttaa välittömästi.
Jäljellä on ainutlaatuinen Idempotency-Key on tarpeen numeroiden jakeluun, toistamiseen jakeluun, peruuttamiseen ja maksupyyntöihin. se on valinnaista, mutta suositellaan handler_api.php. Käytä avainta uudelleen verkkopyynnön peruuttamisen yhteydessä; käytä uutta avainta uudelle toiminnalle.
Avainpäätös API
Voit rajoittaa avaimen tiettyihin palveluihin, maihin ja palveluntarjoajille. tyhjä luettelo mahdollistaa kaikki käytettävissä olevat vaihtoehdot.
{
"label": "Ohjelmistoani",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} Nimi ja toiminta muuttuvat kokonaan. salaisuus näkyy vain luodessaan.
10% kokonaisuudessaan. 5% + 5% ohjelmistokodilla.
Kun lähetät numeroa, anna ref Ohjelmiston omistaja. Hakemus on valtuutettu suorittajan avaimella. Koodi on kohdassa "Referrals" ja GET /api/v1/referrals → software_ref.
| Pyyntö | Kutsua | Ohjelmisto |
|---|---|---|
| Ilman ref | 10% | — |
| Refi kanssa | 5% | 5% |
| Reff, ei viittausta | — | 5% |
Alusta maksetaan bonusta vähentämättä käyttäjän tuloja. Ohjelmiston omistaja ja viittaaja voivat olla sama henkilö. Käyttäjä ei voi käyttää omaa koodiaan.
Säännöt on määritelty, kun istunto luodaan; lukeminen SMS ja retry eivät muutu niitä. Pass ref uudelleen uudelleen toistuvalle istunnolle. Tariffitason laskelmassa käyttäjän palkinto on USD 0.003 antaa USD 0.00015 kukin ohjelmistojen omistajalle ja viittaajalle. Yhteinen bonus on USD 0.00030.
API käskyjä
11 XVBC-tyylimetelmiä plus SMScash tasapaino.
GETgetNumberSaa numero+
Luo istunto ja tallentaa käyttäjälle saatavilla oleva numero. palkkio ja viittaus saajat määritetään erillään; palkkio luovutetaan, kun palkkio on SMS Koodin kanssa tulee.
Parametrit
| Parametrit | tyyppi | kuvaus |
|---|---|---|
api_key* | string | Käyttäjän henkilökohtainen API-avain. |
service* | string | Palvelukodeja. vastaus on rajoitettu API-tunnuksen alueelle. |
country* | integer | Ota ID alkaen getCountries. |
operator | string | Ota ID alkaen operators/getOperators (API). operator=1 · any/0 |
session_duration | integer | Seos kestää 20 minuuttia. pass 20 tai unohda tämä parametri. |
with_operator | integer | 1 lisää vastaukseen operaattorin ID:n; 0 tai pois jättäminen palauttaa kolme osaa. |
ref | string | Julkinen koodi ohjelmistovanhemman: 5% hänelle ja 5% vierailijalle. ilman ref - 10% vierailijalle. |
* Tarvittu parametri. kaikissa pyynnöissä myös toimenpide =getNumber.
Esimerkki pyynnöstä
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)Vastaukset
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- Automaattinen valinta: eniten koodeja viime tunnin, sitten 24 tunnin aikana. Ei numeroita: seuraava operaattori.
- Pass Idempotency-Key: sama pyyntö sama avain palauttaa edellisen istunnon. muutos parametrit kutsuu IDEMPOTENCY_CONFLICT.
- Numerinen maa ilman uima-altaita antaa EMPTY_POOL; väärä maa-muoto on BAD_COUNTRY.
- Poistettujen istuntojen avain on edelleen käytössä: sen kanssa tehtävän jakelun toistaminen palauttaa SESSION_CLOSED -tunnuksen eikä julkaise muuta numeroa.
- Toimitus tulos on vahvistamaton. automaattinen peruuttaminen on poissa toista numeroa välttäen.
GETgetNumbersStatusTarkista saatavuus+
Saatavilla olevat puhelinnumeroat palvelun ja maan mukaan.
Parametrit
| Parametrit | tyyppi | kuvaus |
|---|---|---|
api_key* | string | Käyttäjän henkilökohtainen API-avain. |
country* | integer | Ota ID alkaen getCountries. |
* Tarvittu parametri. kaikissa pyynnöissä myös toimenpide =getNumbersStatus.
Esimerkki pyynnöstä
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())Vastaukset
{
"go_0": 0
}- _0 suffix tarkoittaa valinta ilman erityistä operaattoria.
- Käyttötarkoitus viittaa toimittajan kokonaispussin.Valittu kanava tarkistetaan, kun numero on jaettu.
GETgetStatusSaat viimeisimmän koodin+
Helppo pyyntö istuntotilasta ja viimeisestä SMS-koodista. koodissa on säilytetty johtavia neroja.
Parametrit
| Parametrit | tyyppi | kuvaus |
|---|---|---|
api_key* | string | Käyttäjän henkilökohtainen API-avain. |
id* | integer | Kokouksen tunnus, joka on vastaanotettu, kun numero on annettu. |
* Tarvittu parametri. kaikissa pyynnöissä myös toimenpide =getStatus.
Esimerkki pyynnöstä
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)Vastaukset
STATUS_WAIT_CODESTATUS_OK:001234STATUS_CANCELNO_ACTIVATION- Poll joka 20 sekunnin. uudelleen luominen viestiä ei luo uutta maksua.
- Seuraavat retry vanha koodi ei palata: getStatus odottaa seuraavasta SMS.
- Kun luku ilman SMS Se on poistettu, getStatus ja getSms paluu STATUS_CANCEL; getSmsFull palauttaa suljetun tilan, tyhjä puhelin ja tyhjä sms ja listan. REST /activations/{id} ja /sms paluu 404 NO_ACTIVATION.
GETsetStatusHallinta istunto+
Lopetetaan, peruutetaan tai uudelleen odotetaan SMS: n päättymistä.
Parametrit
| Parametrit | tyyppi | kuvaus |
|---|---|---|
api_key* | string | Käyttäjän henkilökohtainen API-avain. |
id* | integer | Kokouksen tunnus, joka on vastaanotettu, kun numero on annettu. |
status* | integer | 3 – odottaa seuraavaa koodia jatkamatta istuntoa; 6 – päättyy SMS: n jälkeen; 8 – peruuttaa välittömästi. |
* Tarvittu parametri. kaikissa pyynnöissä myös toimenpide =setStatus.
Esimerkki pyynnöstä
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)Vastaukset
ACCESS_RETRY_GETACCESS_ACTIVATIONACCESS_CANCEL- Retry odottaa seuraavaa koodia alkuperäisen 20 minuutin kuluessa.
- Tilanne =3 Käytä Idempotency-Key: toistamalla pyyntö ei palauta uutta koodia, joka on jo vastaanotettu. SMS on edelleen saatavilla.
- Peruutus ei poista jo ansaittuja palkintoja.
- Vain numeroita, joilla on SMS-koodi, säilytetään historiassa.Tuloksena poistettu ja päättyneet numerot ilman koodia poistetaan.
GETgetRepeatNumberLisää sama numero uudelleen+
Avaa uusi istunto, jossa on tietyn numerosi historiastasi. Voit valita toisen käytettävissä olevan palvelun samassa maassa.
Parametrit
| Parametrit | tyyppi | kuvaus |
|---|---|---|
api_key* | string | Käyttäjän henkilökohtainen API-avain. |
number* | string | Vain numerot ja valinnainen johtaja + sallitaan. |
service* | string | Palvelukodeja. vastaus on rajoitettu API-tunnuksen alueelle. |
session_duration | integer | Seos kestää 20 minuuttia. pass 20 tai unohda tämä parametri. |
with_operator | integer | 1 lisää vastaukseen operaattorin ID:n; 0 tai pois jättäminen palauttaa kolme osaa. |
ref | string | Julkinen koodi ohjelmistovanhemman: 5% hänelle ja 5% vierailijalle. ilman ref - 10% vierailijalle. |
operator | string | Ota ID alkaen operators/getOperators (API). operator=1 · any/0 |
* Tarvittu parametri. kaikissa pyynnöissä myös toimenpide =getRepeatNumber.
Esimerkki pyynnöstä
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)Vastaukset
ACCESS_NUMBER:43:380670000000NUMBER_IN_USE- Ensinnäkin lopeta tai peruuttaa nykyinen istunto. Jos numero on kiireinen, uudelleenpoistaminen ei suoriteta.
- Uusi kokous saa uuden ID ja nykyinen tariffit. vanha SMS Ei sitä kopioitu. ref Se on jälleen asetettu.
- SMScash sallii toistamisen vain numeroita tämän tilin historiasta. maa tunnistetaan numeroilla.
- Poistettujen istuntojen avain on edelleen käytössä: sen kanssa tehtävän jakelun toistaminen palauttaa SESSION_CLOSED -tunnuksen eikä julkaise muuta numeroa.
GETgetSmsFullLähetä SMS JSON+
Rakenteellinen historia kaikista viesteistä, joilla on tunniste, lähettäjä, koodi, teksti ja maa, palvelut ja toimittajan tiedot.
Parametrit
| Parametrit | tyyppi | kuvaus |
|---|---|---|
api_key* | string | Käyttäjän henkilökohtainen API-avain. |
id* | integer | Kokouksen tunnus, joka on vastaanotettu, kun numero on annettu. |
* Tarvittu parametri. kaikissa pyynnöissä myös toimenpide =getSmsFull.
Esimerkki pyynnöstä
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())Vastaukset
{
"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"
}- Muista sms[].id käsitellä vain uusia viestejä.
- Numerinen tilanne SMScash: 1 - aktiivinen, 6 - täyttynyt, 8 - peruutettu tai päättynyt. status_name erottaa odottamisen, vastaanottamisen, loppuun saattamisen, peruuttamisen, päättymisen välillä.
- Saatuja koodija pysyvät saatavilla kokouksen sulkemisen jälkeen. REST /activations/{id}/sms kanssa after_id.
- Kun luku ilman SMS Se on poistettu, getStatus ja getSms paluu STATUS_CANCEL; getSmsFull palauttaa suljetun tilan, tyhjä puhelin ja tyhjä sms ja listan. REST /activations/{id} ja /sms paluu 404 NO_ACTIVATION.
GETgetSmsSaa SMS Tekstin sarja+
Palauttaa koko SMS-historian sarjan muodossa olemassa oleville asiakkaille.
Parametrit
| Parametrit | tyyppi | kuvaus |
|---|---|---|
api_key* | string | Käyttäjän henkilökohtainen API-avain. |
id* | integer | Kokouksen tunnus, joka on vastaanotettu, kun numero on annettu. |
* Tarvittu parametri. kaikissa pyynnöissä myös toimenpide =getSms.
Esimerkki pyynnöstä
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)Vastaukset
STATUS_OK:2026-10-09T12:00:00Z|001234|Код подтверждения: 001234STATUS_WAIT_CODESTATUS_CANCEL- Viestin muoto: aika-koodi -viesti.Monet viestit erotetaan kolonnalla.
- tekstiä SMS itse voi sisältää kolonneja ja pystysuora baareja. luotettavan parsingin, käytön getSmsFull.
GETgetServicesPalvelut+
Palvelukodeja. vastaus on rajoitettu API-tunnuksen alueelle.
Parametrit
| Parametrit | tyyppi | kuvaus |
|---|---|---|
api_key* | string | Käyttäjän henkilökohtainen API-avain. |
country | integer | Ota ID alkaen getCountries. |
* Tarvittu parametri. kaikissa pyynnöissä myös toimenpide =getServices.
Esimerkki pyynnöstä
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())Vastaukset
{
"go": {
"name": "Google",
"code": "go"
}
}- Palvelu-kirjasto jaetaan toimittajan kesken.Luku saatavuus tarkastetaan erikseen.
GETgetCountriesMaat+
ID:t, nimet ja soittokodit valitun kanavan maille.
Parametrit
| Parametrit | tyyppi | kuvaus |
|---|---|---|
api_key* | string | Käyttäjän henkilökohtainen API-avain. |
* Tarvittu parametri. kaikissa pyynnöissä myös toimenpide =getCountries.
Esimerkki pyynnöstä
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())Vastaukset
{
"86": {
"id": 86,
"name": "Italy",
"phone_code": "39"
}
}GETgetOperatorsToimijoita+
Käytettävissä olevat operaattorit: API-tunnus, nimi ja palkkion pidätysaika.
Parametrit
| Parametrit | tyyppi | kuvaus |
|---|---|---|
api_key* | string | Käyttäjän henkilökohtainen API-avain. |
country | integer | Ota ID alkaen getCountries. |
operator | string | Ota ID alkaen operators/getOperators (API). operator=1 · any/0 |
* Tarvittu parametri. kaikissa pyynnöissä myös toimenpide =getOperators.
Esimerkki pyynnöstä
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())Vastaukset
{
"1": {
"id": 1,
"provider_id": 1,
"operator": 1,
"name": "Оператор 1",
"earnings_hold_days": 45
}
}- Ota ID alkaen operators/getOperators (API).
GETgetRewardsPalkinto SMS:stä+
Kaikki pöytäkirjat ovat maksullisia SMS:n mukaan.
Parametrit
| Parametrit | tyyppi | kuvaus |
|---|---|---|
api_key* | string | Käyttäjän henkilökohtainen API-avain. |
country | integer | Ota ID alkaen getCountries. |
service | string | Palvelukodeja. vastaus on rajoitettu API-tunnuksen alueelle. |
operator | string | Ota ID alkaen operators/getOperators (API). operator=1 · any/0 |
* Tarvittu parametri. kaikissa pyynnöissä myös toimenpide =getRewards.
Esimerkki pyynnöstä
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())Vastaukset
{
"59": {
"vi": {
"1": "0.01000000",
"3": "0.00500000"
}
}
}{}- USD tulliarvot palautetaan täsmällisinä kymmenkertaisina tiivisteinä 8 Kymmenenkymmenen paikan:
- Käyttöoikeudet tarjoajat saatavilla avaimellesi.
- country ID → service code → operator ID → reward (USD)
GETgetBalanceKäyttäjän saldo+
Lisä SMScash: saatavilla oleva taso ottaen huomioon akrualit, viittausbonukset ja maksupyyntöjä.
Parametrit
| Parametrit | tyyppi | kuvaus |
|---|---|---|
api_key* | string | Käyttäjän henkilökohtainen API-avain. |
* Tarvittu parametri. kaikissa pyynnöissä myös toimenpide =getBalance.
Esimerkki pyynnöstä
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)Vastaukset
ACCESS_BALANCE:0.00- getBalance palauttaa saatavilla olevan USD-balanssin, jossa on jopa 8 kymmenen pisteen.
- Voit nostaa vain varoja, joiden pidätysaika on päättynyt.
GETgetHoldBalancePidätetty+
Kun SMS on vastaanotettu, tuloja pidätetään toimittajan määrittämän ajan. Määritettynä päivänä summa tulee automaattisesti nostettavaksi.
Parametrit
| Parametrit | tyyppi | kuvaus |
|---|---|---|
api_key* | string | Käyttäjän henkilökohtainen API-avain. |
* Tarvittu parametri. kaikissa pyynnöissä myös toimenpide =getHoldBalance.
Esimerkki pyynnöstä
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)Vastaukset
ACCESS_HOLD_BALANCE:34.50000001- SMScash · getHoldBalance · USD · 8
- Voit nostaa vain varoja, joiden pidätysaika on päättynyt.
Vastauskoodi ja toistuvien pyyntöjen palauttaminen
Sisään handler_api.pp liiketulokset tulevat yleensä kanssa HTTP 200. Tarkista ruumiin teksti. getSmsFull takaisin JSON Jos onnistui, virheet ovat aina teksti.
| Koodi | HTTP | Syynä ja seuraava askel |
|---|---|---|
TARIFF_NOT_CONFIGURED | 200 | Taksoja ei ole vielä määriteltyNumero-erityksiä aloitetaan, kun SMS-palkinto on määritetty. |
COUNTRY_BLOCKED | 200 | Tähän maahan on suljettu numeroiden myöntäminen.Valitse toinen maa. |
BAD_SERVICE | 200 | Palvelun numero on estetty.Valitse toinen palvelu. |
PROVIDER_NOT_READY | 200 | Luvut ovat väliaikaisesti käytettävissäValitse API-katalogit uudelleen. |
BAD_KEY | 400 | Ei api_key tai virkainen muoto.Tarkista avain pyynnössä. |
INVALID_API_KEY | 401 | Avain on tuntematon, peruutettu tai tili on poissa.Luo voimassa oleva API-tuki. |
BAD_COUNTRY | 400 | Maata puuttuu tai ei ole positiivinen numero.Ota ID alkaen getCountries. |
BAD_SESSION_DURATION | 400 | Puhelinnumero on tarkoitettu täsmälleen 20 minuuttia.Oikeastaan session_duration. |
BAD_REQUEST | 400 | Epämerkiksi parametra tai Idempotency-Key.Pyydän korjaamaan pyyntösi. |
BAD_SERVICE / BAD_OPERATOR / INVALID_PROVIDER | 200 | Tietämätön tai poissaolevan rekisterin kohteen.Valitse API-katalogit uudelleen. |
BAD_NUMBER | 200 | Virheellinen numero muotoilu.Anna numero digiteissä. |
BAD_ACTION / BAD_STATUS | 200 | Tietämätön käsky, tunnistus tai toimenpide.Tarkista asetukset |
EMPTY_POOL | 200 | Tällä hetkellä ei ole saatavilla vastaavia puhelinnumeroita.Toista sitten 10-30 sekuntia tai muuttaa suodattimia. |
NUMBER_IN_USE | 200 | Tietty numero on aktiivisen istunnon mukana.Lopeta istunto tai valitse toinen numero. |
NO_ACTIVATION | 200 | Seos tai aikaisempi numero ei kuulu tilillesi.Tarkista ID ja avain. |
SESSION_CLOSED / SMS_REQUIRED | 200 | Valtion siirtymä ei ole tällä hetkellä saatavilla.Tarkista tilanne ja saatavuus SMS. |
SCOPE_BLOCKED | 200 | Palvelu, maa tai toimittaja ei ole luvannut avaimen.Päivitä API-tunnuksen laajuus. |
IDEMPOTENCY_CONFLICT | 200 | Tämä kysely avain on jo yhdistetty muihin parametreihin.Uuden toiminnan kannalta luo toinen Idempotency-Key. |
BAD_REF / SELF_REF | 400 | Ohjelmiston koodi on tuntematon, poissaolot tai kuuluu käyttäjälle itselleen.Tarkista ohjelmiston omistajan koodi. |
INTERNAL_ERROR | 500 | Väliaikainen palvelin tai toimittaja virhe.Toistaa vähän ja samalla Idempotency-Key. |
ALLOCATION_PENDING | 200 | Luvut ovat jo käynnissä. palautus samaan Idempotency-Key.Luvut ovat jo käynnissä. palautus samaan Idempotency-Key. |
ALLOCATION_UNCERTAIN | 200 | Toimitus tulos on vahvistamaton. automaattinen peruuttaminen on poissa toista numeroa välttäen.Toimitus tulos on vahvistamaton. automaattinen peruuttaminen on poissa toista numeroa välttäen. |
REST palauttaa esineen {"error":{"code":"…","message":"…"}} ja säännölliset HTTP-tilat 400/401/403/404/409/503.
{
"error": {
"code": "BAD_REQUEST",
"message": "Tarkista pyyntö kentät.",
"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.Jäljelle jäävät uudet integraatiot
USD tulliarvot palautetaan täsmällisinä kymmenkertaisina tiivisteinä 8 Kymmenenkymmenen paikan: 0.00300000 USD.
Tilanne valuutta on USD. Pyyntö- ja vastausjärjestelmät ovat saatavilla OpenAPI.
/api/v1/catalogPalvelut ja maat/api/v1/tariffsSMS palkkiota maasta/api/v1/offersHinnat ja palkinnot/api/v1/servicesOhjaaja/api/v1/countriesOhjaaja/api/v1/operatorsOhjaaja/api/v1/availability?country=1Käytettävyyskirjoja/api/v1/activationsUusi istunto/api/v1/activations/batch?ids=42,43Tarkista useita numeroita/api/v1/activationsViimeiset 200 istuntoa: kesto = historia, odotus tai kaikki/api/v1/activations/{id}Istunto ja viestit/api/v1/activations/{id}/sms?after_id=0&limit=100Uusi SMS kursorilla/api/v1/activations/{id}/retryOdotamme SMS:tä/api/v1/activations/{id}/finishTäydentämistä/api/v1/activations/{id}/cancelperuuttaminen/api/v1/activations/repeatNumero palautetaan/api/v1/keysAPI Avaimet/api/v1/keysLuo avain/api/v1/keys/{id}Nimen vaihdon tai politiikan/api/v1/keys/{id}Avain peruuttaminen/api/v1/referralsViittauskoodin ja tulojen/api/v1/summaryTasapaino ja yhteenvedon/api/v1/balancePidätetty/api/v1/ledgerTuloja LEDGER/api/v1/withdrawalsMaksun pyyntöjä/api/v1/withdrawalsLuo pyyntö/api/v1/statisticsYleinen tilastot/api/v1/earnings/holdsTulojen pidätysaikaSaa vain uusia SMS-viestejä
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": "Koodi: 001234",
"sender": "Service",
"received_at": "2026-10-09T12:00:00Z"
}
],
"next_cursor": 101,
"has_more": false
}Pelastaminen next_cursor ja siirtää se niin kuin after_idJos has_more=trueSeuraava sivu voidaan lukea välittömästi. limit: 1–200istuntoja ja SMS Ne ovat saatavilla vain omistajalle.