API Dokumentacion
Numeralar, mesajlar, qaytarlar, direktni app sizdan.
Bir islanga başlar.
Bir API key sizda, bir numir sizda, 20 sekonda mesajlar üçün kontrol edin. SMS-i kodla qaytarda qodib.
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}'Alternatif uyumayan interfesi adres: /handler_api.php. REST integrasyonlar bilan bilan bilan bilan.
Soʻrov tuzuvchi
Idempotency-Key: UUID · POST · 8–128
Avtomatik tanlash: oxirgi soatda, keyin 24 soatda eng ko‘p kod. Raqam yo‘q bo‘lsa, keyingi 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.Kalit saqlanmaydi. Bu tekshiruv raqam bermaydi.
Yeni integrasyonlar üçün
Xizmatlar va mamlakatlar
Bir servis və bir ülke seç. SMS-ga payat bilan bilan bilan.
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)
Bir numirga
POST /api/v1/activations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Idempotency-Key: request-unique-001
{
"service": "go",
"country": 86
}Avtomatik tanlash: oxirgi soatda, keyin 24 soatda eng ko‘p kod. Raqam yo‘q bo‘lsa, keyingi 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: stringRaqam 20 daqiqa uchun haqiqiy emas. SMS 20 soniya orasidagi tekshirildi. Butunlay bekor qilishingiz mumkin.
Bir nechta raqamni tekshirish
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 messageBalans · Ushlab turilgan
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 — Mavjud; held_balance — Ushlab turilgan. USD · 8
Faqat ushlab turish muddati tugagan mablag‘ni yechish mumkin.
Tayyor mijoz dasturlari
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.phpFoydalanuvchining shaxsiy API kaliti.
Bir servis və bir ülke seç. SMS-ga payat bilan bilan bilan.
| Kod | Tadiq |
|---|---|
getNumber / getNumberV2 | Bir numirga |
getStatus / getStatusV2 | U‘ziyda koodlar |
setStatus / finishActivation / cancelActivation | Sesi bilan |
getPrices / getNumbersStatus | Tadiqlar bilan bilan bilan |
getRewards (SMScash) | SMS-dan qaytadi |
getServicesList / getServices | Xizmatlar |
getCountries / getOperators | Xizmatlar va mamlakatlar |
getActiveActivations | Sesi |
getBalance | Foydalanuvchi balansi |
getHoldBalance (SMScash) | Ushlab turilgan |
cost = 0 USD · activationCost = 0 USDreward — SMS-dan qaytadi
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.Raqam 20 daqiqa uchun haqiqiy emas. SMS 20 soniya orasidagi tekshirildi. Butunlay bekor qilishingiz mumkin.
Authentication və retries
REST: Tadiq Authorization: Bearer YOUR_API_KEY. Kompatiblik interfac: Parametri api_key va actionHTTPS qizizga.
API key'lar qadi, hesabinizdir.
API-dan qurtlar frekanslar, telefon numirlar saylar qurtlar. Günlük ya qurtlar yok.
Raqam 20 daqiqa uchun haqiqiy emas. SMS 20 soniya orasidagi tekshirildi. Butunlay bekor qilishingiz mumkin.
Bir o‘z, bir o‘z Idempotency-Key Numeralar bilan, qaytarda bilan, retry and payut demand. Bu seçkin, ama handler_api.php'da rekomandir. Network request'u retrying koʻyadi key. New key'u yeni bir operasyon için kullan.
API key gap
Boʻsh roʻyxatlarning barcha mavjud parametrlarini kerak boʻlishi mumkin.
{
"label": "Software‘m",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} U'qizga, ismi və politikadi qaytadi.Sahdi yalnız yaratilgan.
10% total. 5% + 5% software kod.
Raqam boʻlganda, iltimos koʻrsating ref Dastur egasi. Talab qilishda xatolik roʻy berdi. Kod "Terferals" boʻyicha va bunda GET /api/v1/referrals → software_ref.
| Yatama | Tadiq | Software |
|---|---|---|
| Refa‘mga | 10% | — |
| Ref bilan | 5% | 5% |
| Ref bilan hech qanday emas | — | 5% |
Platform bonusni ushbu qilishda qilib moslash. Dastur egasi va referer bir xil odam bo'lishi mumkin. Foydalanuvchining oʻz kodidan foydalanib bo'lmaydi.
Seans yaratilganda shartlar oʻrnatiladi SMS va retry Ularni oʻzgartirish yoʻq. ref Yangi seans uchun qaytadan yuklash. Tarif hisoblashda foydalanuvchi moslamasi USD 0.003 Qidirish USD 0.00015 har bir dastur egasi va referer. Jami bonus USD 0.00030.
API komando
11 XVBC-style metodlar plus siz SMScash bilan.
GETgetNumberBir numirga+
Seansni yaratish va ishga tushirish uchun mavjud raqamlarni saqlab qolish. Moslama va tahrirlash qiymatini tahril qilishda oʻrnatilgan. SMS Kod bilan keladi.
Parametri
| Parametrik | Tip | Tadiq |
|---|---|---|
api_key* | string | Foydalanuvchining shaxsiy API kaliti. |
service* | string | Mavjud xizmat kodlari. Javob API kalitining maydoniga cheksiz. |
country* | integer | Qidirish ID Kimdan getCountries. |
operator | string | Qidirish ID Kimdan operators/getOperators (API). operator=1 · any/0 |
session_duration | integer | Sesi 20 min. 20 min. o‘zayga bu parametrini kayga. |
with_operator | integer | 1 javobga operator ID sini qo‘shadi; 0 yoki parametr berilmasa, uchta qism qaytariladi. |
ref | string | Dastur egasinining odamli kodi: 5% va 5% u uchun davom emas. Davlat qilish uchun ref - 10%siz. |
* Parametri va‘z. Bütün isilimlarda da aksiya=getNumber pass.
Muallif soʻrov
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)Reagib
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- Avtomatik tanlash: oxirgi soatda, keyin 24 soatda eng ko‘p kod. Raqam yo‘q bo‘lsa, keyingi operator.
- Yoʻq Idempotency-Key: shunday soʻrov oldingi seansni qayta qiladi. Parametrlarni oʻzgartirish IDEMPOTENCY_CONFLICT.
- Bir pool olmadan numeral bir zemni EMPTY_POOL, bad country format is BAD_COUNTRY.
- Oʻchirilgan seans kalitda qoʻllanilmaydi: shu tugma bilan tahrirlashni qaytadan oʻynash, SESION_CLOSED'dan foydalanish va boshqa raqam boʻlmaydi.
- Tahrirlash natijasi tasdiqlanmagan. Ikkining raqamni tahrirlanmasin uchun avtomatik qaytadan keraklashni oʻchirib boʻladi.
GETgetNumbersStatusTadiqlar bilan bilan bilan+
Xizmat va maʼlumot boʻyicha mavjud telefon raqami.
Parametri
| Parametrik | Tip | Tadiq |
|---|---|---|
api_key* | string | Foydalanuvchining shaxsiy API kaliti. |
country* | integer | Qidirish ID Kimdan getCountries. |
* Parametri va‘z. Bütün isilimlarda da aksiya=getNumbersStatus pass.
Muallif soʻrov
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())Reagib
{
"go_0": 0
}- _0 suffix o‘zari bir seçim o‘zari bir operator.
- Mavjud boʻlgan faylning umumiy oʻlchamiga koʻrsatiladi. Tanlangan kanal raqam berilganda tekshirildi.
GETgetStatusU‘ziyda koodlar+
Sesi statusni və son SMS kodni qaytadi. kodda qizizizlar kaygan.
Parametri
| Parametrik | Tip | Tadiq |
|---|---|---|
api_key* | string | Foydalanuvchining shaxsiy API kaliti. |
id* | integer | Seansning ID'si, raqam kiritilganda olib tashlangan. |
* Parametri va‘z. Bütün isilimlarda da aksiya=getStatus pass.
Muallif soʻrov
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)Reagib
STATUS_WAIT_CODESTATUS_OK:001234STATUS_CANCELNO_ACTIVATION- Har 20 soniya koʻrsatiladi. Xabarni qayta oʻqish boshqa moslama yaratilmagan.
- Retrikdan sonra eski kod qaytarmay: getStatus bir sonraki SMS'i qaytarmaygan.
- SMS orqali raqam oʻchirilmagandan keyin, getStatus va getSmss STATUS_CANCEL qaytadan qayta; getSmsFull yopish holati, boʻsh telefon va bosh sms roʻyxatini qayta qiladi. REST /activations/{id} va /smss 404 NO_ACTIVATION' ga qaytarish.
GETsetStatusSesi bilan+
U'qiz, xiyim o'qiz, SMS'i qaytarga.
Parametri
| Parametrik | Tip | Tadiq |
|---|---|---|
api_key* | string | Foydalanuvchining shaxsiy API kaliti. |
id* | integer | Seansning ID'si, raqam kiritilganda olib tashlangan. |
status* | integer | 3 - Seansni bajarishdan keyingi kodni kutib koʻrish; 6 - SMS; 8 - butunlay bekor qilish. |
* Parametri va‘z. Bütün isilimlarda da aksiya=setStatus pass.
Muallif soʻrov
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)Reagib
ACCESS_RETRY_GETACCESS_ACTIVATIONACCESS_CANCEL- Keyingi kodni asl 20 daqiqada urinib koʻrish. Muddati va oʻchirish vaqti oʻzgartirilmaydi.
- Comment3 ishlatiladigan Idempotency-Key: talabni takrorlash, allaqachon olib tashlangan yangi kodni qayta tiklash. SMS mavjud emas.
- Bekor qilish allaqachon oʻchirilmagan moslamalarni olib tashlash.
- SMS kodlu number qotʻlar kayan. kodlu olmayan kayanlar kayanlar kayanlar.
GETgetRepeatNumberBitta raqamni bosib chiqarish+
Siz istoriyadan bir numaradan yeni bir sesyon qotlar. Siz bir başka servis seçib.
Parametri
| Parametrik | Tip | Tadiq |
|---|---|---|
api_key* | string | Foydalanuvchining shaxsiy API kaliti. |
number* | string | Sizga eski numir. Yal numirlar və seçkin bir lider + qothatlar. |
service* | string | Mavjud xizmat kodlari. Javob API kalitining maydoniga cheksiz. |
session_duration | integer | Sesi 20 min. 20 min. o‘zayga bu parametrini kayga. |
with_operator | integer | 1 javobga operator ID sini qo‘shadi; 0 yoki parametr berilmasa, uchta qism qaytariladi. |
ref | string | Dastur egasinining odamli kodi: 5% va 5% u uchun davom emas. Davlat qilish uchun ref - 10%siz. |
operator | string | Qidirish ID Kimdan operators/getOperators (API). operator=1 · any/0 |
* Parametri va‘z. Bütün isilimlarda da aksiya=getRepeatNumber pass.
Muallif soʻrov
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)Reagib
ACCESS_NUMBER:43:380670000000NUMBER_IN_USE- Birincisi, sizga qurtlan o‘ziz. Sizga numir bo‘ziz, re-exuansi ko‘ziz.
- Yeni sezyon o‘zayni yeni ID o‘zayni. eski SMS o‘zayni ko‘zayni. ref o‘zayni.
- SMScash bu hesabın tarihini yalnız numirlar qaytarmadi.
- Oʻchirilgan seans kalitda qoʻllanilmaydi: shu tugma bilan tahrirlashni qaytadan oʻynash, SESION_CLOSED'dan foydalanish va boshqa raqam boʻlmaydi.
GETgetSmsFullJSON sifatida SMSni olish+
Bütün mesajlar ID, sendir, kod, tekst, land, servis, ve supplier data ile kayan bilan.
Parametri
| Parametrik | Tip | Tadiq |
|---|---|---|
api_key* | string | Foydalanuvchining shaxsiy API kaliti. |
id* | integer | Seansning ID'si, raqam kiritilganda olib tashlangan. |
* Parametri va‘z. Bütün isilimlarda da aksiya=getSmsFull pass.
Muallif soʻrov
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())Reagib
{
"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"
}- Birlashtirish uchun koʻrsatilgan formati. sms[].id'ni faqat yangi xabarlarni koʻrsatish uchun eslab qolish.
- Raqamli holat SMScash: 1 - aktiv, 6 - bajarildi. 8 - bekor qilindi yoki muddati oʻchirildi. status_name Kutilmoqda, olib tashlangan, tugadi, bekor qilindi, muddati oʻtish.
- Seans yopishdan soʻng mavjud boʻlmaydi. Katta disk qismlar uchun REST /activations/{id}/sms'dan after_id bilan foydalaning.
- SMS orqali raqam oʻchirilmagandan keyin, getStatus va getSmss STATUS_CANCEL qaytadan qayta; getSmsFull yopish holati, boʻsh telefon va bosh sms roʻyxatini qayta qiladi. REST /activations/{id} va /smss 404 NO_ACTIVATION' ga qaytarish.
GETgetSmsSMS bir texta string kimi qaytadi+
Mavjud klientlar uchun qator formatida butun SMS tarixini qaytadan qayta qiladi.
Parametri
| Parametrik | Tip | Tadiq |
|---|---|---|
api_key* | string | Foydalanuvchining shaxsiy API kaliti. |
id* | integer | Seansning ID'si, raqam kiritilganda olib tashlangan. |
* Parametri va‘z. Bütün isilimlarda da aksiya=getSms pass.
Muallif soʻrov
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)Reagib
STATUS_OK:2026-10-09T12:00:00Z|001234|Код подтверждения: 001234STATUS_WAIT_CODESTATUS_CANCEL- Xabarning koʻrinishi:
- SMS-i özni kolonlar və vertikal barlar qo‘yadi. güvenilir parsing, getSmsFull'u kullan.
GETgetServicesXizmatlar+
Mavjud xizmat kodlari. Javob API kalitining maydoniga cheksiz.
Parametri
| Parametrik | Tip | Tadiq |
|---|---|---|
api_key* | string | Foydalanuvchining shaxsiy API kaliti. |
country | integer | Qidirish ID Kimdan getCountries. |
* Parametri va‘z. Bütün isilimlarda da aksiya=getServices pass.
Muallif soʻrov
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())Reagib
{
"go": {
"name": "Google",
"code": "go"
}
}- Servisdi direktori isshadi isshadi. Number disponibility is checked separat.
GETgetCountriesMamlakatlar+
IDs, nomlar, calling codes qiya'lar seçkin kanalda.
Parametri
| Parametrik | Tip | Tadiq |
|---|---|---|
api_key* | string | Foydalanuvchining shaxsiy API kaliti. |
* Parametri va‘z. Bütün isilimlarda da aksiya=getCountries pass.
Muallif soʻrov
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())Reagib
{
"86": {
"id": 86,
"name": "Italy",
"phone_code": "39"
}
}GETgetOperatorsOperatorlar+
Mavjud operatorlar: API ID, nomi va mukofotni ushlab turish muddati.
Parametri
| Parametrik | Tip | Tadiq |
|---|---|---|
api_key* | string | Foydalanuvchining shaxsiy API kaliti. |
country | integer | Qidirish ID Kimdan getCountries. |
operator | string | Qidirish ID Kimdan operators/getOperators (API). operator=1 · any/0 |
* Parametri va‘z. Bütün isilimlarda da aksiya=getOperators pass.
Muallif soʻrov
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())Reagib
{
"1": {
"id": 1,
"provider_id": 1,
"operator": 1,
"name": "Оператор 1",
"earnings_hold_days": 45
}
}- Qidirish ID Kimdan operators/getOperators (API).
GETgetRewardsSMS-dan qaytadi+
Jadvalning qiymati boʻlishi mumkin. Hamma qiymatlar moslamadi SMS.
Parametri
| Parametrik | Tip | Tadiq |
|---|---|---|
api_key* | string | Foydalanuvchining shaxsiy API kaliti. |
country | integer | Qidirish ID Kimdan getCountries. |
service | string | Mavjud xizmat kodlari. Javob API kalitining maydoniga cheksiz. |
operator | string | Qidirish ID Kimdan operators/getOperators (API). operator=1 · any/0 |
* Parametri va‘z. Bütün isilimlarda da aksiya=getRewards pass.
Muallif soʻrov
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())Reagib
{
"59": {
"vi": {
"1": "0.01000000",
"3": "0.00500000"
}
}
}{}- USD tariff bilan bilan bilan bilan 8 decimal qotlarga xiyimlik bir decimal qotlarga qaytarga:
- Kalitga yoqilgan providerlar mavjud.
- country ID → service code → operator ID → reward (USD)
GETgetBalanceFoydalanuvchi balansi+
Qoʻshimcha SMScash: mavjud balanchasini hisoblash, boshqaruvlar va moslamalar soʻroviga oʻtish.
Parametri
| Parametrik | Tip | Tadiq |
|---|---|---|
api_key* | string | Foydalanuvchining shaxsiy API kaliti. |
* Parametri va‘z. Bütün isilimlarda da aksiya=getBalance pass.
Muallif soʻrov
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)Reagib
ACCESS_BALANCE:0.00- getBalance mavjud USD balansasini 8 oʻnlik boʻyiga koʻrsatadi.
- Faqat ushlab turish muddati tugagan mablag‘ni yechish mumkin.
GETgetHoldBalanceUshlab turilgan+
SMS olinganidan keyin daromad yetkazib beruvchi belgilagan muddatga ushlab turiladi. Belgilangan sanada summa avtomatik ravishda yechish uchun mavjud bo‘ladi.
Parametri
| Parametrik | Tip | Tadiq |
|---|---|---|
api_key* | string | Foydalanuvchining shaxsiy API kaliti. |
* Parametri va‘z. Bütün isilimlarda da aksiya=getHoldBalance pass.
Muallif soʻrov
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)Reagib
ACCESS_HOLD_BALANCE:34.50000001- SMScash · getHoldBalance · USD · 8
- Faqat ushlab turish muddati tugagan mablag‘ni yechish mumkin.
Reply kodlar və tekrarlarlar
handler_api.php biznes natijasida oddiy HTTP 200 bilan boʻladi. Burcha matnni tekshiring. Direktoriyalar va getSmsFull return JSON agar muvaffaqiyat boʻlsa, xatolar har doim matn boʻlishi mumkin.
| Kod | HTTP | Bir sonraki yadi |
|---|---|---|
TARIFF_NOT_CONFIGURED | 200 | Davom emasRaqamni tahrirlash bir bitta SMS moslamalarini moslash mumkin. |
COUNTRY_BLOCKED | 200 | @ info: whatsthisBir başka zemni seçin. |
BAD_SERVICE | 200 | Bu servisin numblar bloklar.Di‘zari bir servis seçib. |
PROVIDER_NOT_READY | 200 | Raqamni tahrirlash vaqtinchalik mavjud emasAPI kataloglarini yangilash. |
BAD_KEY | 400 | Yoʻq api_key yoki xato format.Talab uchun kalitni tekshirish. |
INVALID_API_KEY | 401 | Key is unknown, rebound o‘qont is disabled.Bir API key qadi. |
BAD_COUNTRY | 400 | Manzil yoki muhim raqam yoʻq.Qidirish ID Kimdan getCountries. |
BAD_SESSION_DURATION | 400 | Telefon numirlar 20 dakikadan qotʻlar.Taʼrifi session_duration. |
BAD_REQUEST | 400 | Xato parametr Idempotency-Key.Sizga isilini koruyun. |
BAD_SERVICE / BAD_OPERATOR / INVALID_PROVIDER | 200 | Unknown o disabled directory item.API kataloglarini yangilash. |
BAD_NUMBER | 200 | Raqamning notoʻgʻri formati.Siz numirni digitlarda qo‘z. |
BAD_ACTION / BAD_STATUS | 200 | Unnan, ID o operasyon.Parametrlarni tekshirish. |
EMPTY_POOL | 200 | Joriy telefon raqami mavjud emas.10-30 sekni sonra tekrarlar o‘ziz o‘ziz filtrarlar. |
NUMBER_IN_USE | 200 | Bir aktiv seanssiya bir numir o‘zizib.Seansni tugatish yoki boshqa raqamni tanlang. |
NO_ACTIVATION | 200 | Sesi ya o‘zari number sizga hesabda olmaygan.ID və key bilan bilan bilan bilan. |
SESSION_CLOSED / SMS_REQUIRED | 200 | Holat uzatish joriy mavjud emas.SMS'nin qotlamadini və qotlamadini kontrol. |
SCOPE_BLOCKED | 200 | Service, country, o vendlar bu key için yetkilimiz olmaygan.API key'nin yasanni yasanni. |
IDEMPOTENCY_CONFLICT | 200 | Ushbu soʻrov kaliti boshqa parametrlar bilan bogʻliq boʻlgan.Yeni bir operasyonda, bir başka Idempotency-Key-i yaratlar. |
BAD_REF / SELF_REF | 400 | Dastur kodi nomaʼlum, oʻchirilgan yoki foydalanuvchi oʻziga emas.Suxo‘lar programın sahibinin kodlar. |
INTERNAL_ERROR | 500 | Server o vendor error.Kechikish va bir xil qidirish Idempotency-Key. |
ALLOCATION_PENDING | 200 | Raqamni tahrirlash allaqachon mavjud. Bir xil bilan qaytadan urinish Idempotency-Key.Raqamni tahrirlash allaqachon mavjud. Bir xil bilan qaytadan urinish Idempotency-Key. |
ALLOCATION_UNCERTAIN | 200 | Tahrirlash natijasi tasdiqlanmagan. Ikkining raqamni tahrirlanmasin uchun avtomatik qaytadan keraklashni oʻchirib boʻladi.Tahrirlash natijasi tasdiqlanmagan. Ikkining raqamni tahrirlanmasin uchun avtomatik qaytadan keraklashni oʻchirib boʻladi. |
REST bir objekti qaytarga {"error":{"code":"…","message":"…"}} va doim HTTP holati 400/401/403/404/409/503.
{
"error": {
"code": "BAD_REQUEST",
"message": "Talab qilish maydonlarini tekshirish.",
"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.Yeni integrasyonlar üçün
USD tariff bilan bilan bilan bilan 8 decimal qotlarga xiyimlik bir decimal qotlarga qaytarga: 0.00300000 USD.
Balansa pul USD. Talab qilish va javob qoliplari mavjud emas OpenAPI.
/api/v1/catalogXizmatlar va mamlakatlar/api/v1/tariffsSMS Raqamlar/api/v1/offersTariflar və premi/api/v1/servicesDirektor/api/v1/countriesDirektor/api/v1/operatorsDirektor/api/v1/availability?country=1Tadiqlarda disponibility/api/v1/activationsYeni seansat/api/v1/activations/batch?ids=42,43Bir nechta raqamni tekshirish/api/v1/activationsSon 200 seats: scope=history, o‘qot o‘qot o‘qot/api/v1/activations/{id}Sesiya və mesajlar/api/v1/activations/{id}/sms?after_id=0&limit=100SMS qizizizga qizizizga/api/v1/activations/{id}/retrySMS'i qaytadi/api/v1/activations/{id}/finishTadiq/api/v1/activations/{id}/cancelYatmadi/api/v1/activations/repeatNumerari qaytar/api/v1/keysAPI Key/api/v1/keysBir key ko‘zadi/api/v1/keys/{id}Nominadi ya politikan./api/v1/keys/{id}Key qiziziz/api/v1/referralsReferral kodlar və qaytarlar/api/v1/summaryName/api/v1/balanceUshlab turilgan/api/v1/ledgerLeddari bilan/api/v1/withdrawalsPaytlarga qaytarga/api/v1/withdrawalsBir islanni/api/v1/statisticsStatistika bilan/api/v1/earnings/holdsDaromadni ushlab turishYeni SMS'i qaytadi
GET /api/v1/activations/42/sms?after_id=0&limit=100
Authorization: Bearer YOUR_API_KEY{
"session_id": 42,
"sms": [
{
"id": 101,
"code": "001234",
"text": "Kood: 001234",
"sender": "Service",
"received_at": "2026-10-09T12:00:00Z"
}
],
"next_cursor": 101,
"has_more": false
}Saqlash next_cursor Uni boshlab qoʻyish after_id. Agar has_more=trueKeyingi sahifa butunlay oʻqish mumkin. limit: 1–200. Seans va SMS faqat egasi uchun mavjud.