API dokümantasyonu
Doğrudan uygulamanızdan sayılar, mesajlar ve kazançlar.
Tek bir istekle başlayın
Panelinizde bir API anahtarı oluşturun, bir sayı alın ve her 20 saniye de bir mesaj kontrol edin. Kodlu bir SMS geldiğinde ödeme işlemi gerçekleşir; bunu tekrar okumanız hesabınızı etkilemez.
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 uyumlu arayüz adresi: /handler_api.php. Mevcut REST entegrasyonları çalışmaya devam etmektedir.
İstek oluşturucu
Idempotency-Key: UUID · POST · 8–128
Otomatik seçim: son saatte, ardından 24 saatte en çok kod. Numara yoksa sonraki operatör.
curl --max-time 15 --fail-with-body -X POST 'https://smscash.org/api/v1/activations' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: request-unique-001' \
--data '{"service":"go","country":86}'package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
payload := []byte("{\"service\":\"go\",\"country\":86}")
req, err := http.NewRequest("POST", "https://smscash.org/api/v1/activations", bytes.NewReader(payload))
if err != nil { panic(err) }
req.Header.Set("Authorization", "Bearer " + os.Getenv("SMSCASH_API_KEY"))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Idempotency-Key", "request-unique-001")
client := &http.Client{Timeout: 15 * time.Second, CheckRedirect: func(_ *http.Request, _ []*http.Request) error { return http.ErrUseLastResponse }}
res, err := client.Do(req)
if err != nil { panic(err) } // Keep the same operation key after a network error.
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil { panic(err) }
if res.StatusCode >= 300 {
fmt.Fprintf(os.Stderr, "HTTP %d, request_id=%s\n%s\n", res.StatusCode, res.Header.Get("X-Request-ID"), body)
os.Exit(1)
}
fmt.Println(string(body))
}// Node.js 18+: set SMSCASH_API_KEY in your environment.
const response = await fetch("https://smscash.org/api/v1/activations", {
method: "POST",
headers: {
Authorization: 'Bearer ' + process.env.SMSCASH_API_KEY,
'Content-Type': 'application/json',
'Idempotency-Key': "request-unique-001",
},
body: JSON.stringify({
"service": "go",
"country": 86
}),
signal: AbortSignal.timeout(15000),
redirect: 'error',
});
const result = await response.json();
if (!response.ok) {
const error = result.error || {};
console.error(response.status, error.code, error.hint, error.request_id);
throw new Error(error.message || 'API error');
}
console.log(result);
// SMS codes are strings: keep leading zeros. Never retry writes automatically.import json
import os
import urllib.error
import urllib.request
class NoRedirect(urllib.request.HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
return None
headers = {
'Authorization': 'Bearer ' + os.environ['SMSCASH_API_KEY'],
'Content-Type': 'application/json',
'Idempotency-Key': "request-unique-001",
}
request = urllib.request.Request(
"https://smscash.org/api/v1/activations",
headers=headers,
data="{\"service\":\"go\",\"country\":86}".encode('utf-8'),
method="POST",
)
try:
with urllib.request.build_opener(NoRedirect).open(request, timeout=15) as response:
result = json.load(response)
print(result)
except urllib.error.HTTPError as error:
details = json.load(error).get('error', {})
print(error.code, details.get('code'), details.get('hint'), details.get('request_id'))
raise
# No automatic retries; SMS codes remain strings.Anahtar kaydedilmez. Bu kontrol numara tahsis etmez.
Yeni entegrasyonlar için REST
Hizmetler ve ülkeler
Bir hizmet ve ülke seçin. SMS başına ödeme ülkeye bağlıdır.
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 numara al
POST /api/v1/activations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Idempotency-Key: request-unique-001
{
"service": "go",
"country": 86
}Otomatik seçim: son saatte, ardından 24 saatte en çok kod. Numara yoksa sonraki operatör.
201: new session · 200: replay of the same operation
service + country OR offer_id · duration_minutes: 20
ref: software owner code (optional)
operator: public ID (e.g. 1 for Operator 1), optional · any/0: automatic
country: integer · service: string · SMS code: stringSayı 20 dakika için geçerlidir. SMS her 20 saniyede bir kontrol edilir. Hemen iptal edebilirsiniz.
Birden fazla numarayı kontrol et
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 messageBakiye · Bekletiliyor
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 — Mevcut; held_balance — Bekletiliyor. USD · 8
Yalnızca bekletme süresi sona ermiş tutarlar çekilebilir.
Kullanıma hazır istemciler
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.phpKullanıcının kişisel API anahtarı.
Bir hizmet ve ülke seçin. SMS başına ödeme ülkeye bağlıdır.
| Kod | Açıklama |
|---|---|
getNumber / getNumberV2 | Bir numara al |
getStatus / getStatusV2 | En son kodu alın |
setStatus / finishActivation / cancelActivation | Oturumu yönet |
getPrices / getNumbersStatus | Müsaitliği kontrol et |
getRewards (SMScash) | SMS için ödül |
getServicesList / getServices | Hizmetler |
getCountries / getOperators | Hizmetler ve ülkeler |
getActiveActivations | Oturumlar |
getBalance | Kullanıcı bakiyesi |
getHoldBalance (SMScash) | Bekletiliyor |
cost = 0 USD · activationCost = 0 USDreward — SMS için ödül
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.Sayı 20 dakika için geçerlidir. SMS her 20 saniyede bir kontrol edilir. Hemen iptal edebilirsiniz.
Kimlik doğrulama ve yeniden deneme
REST: başlık Authorization: Bearer YOUR_API_KEY. Uyumlu Arayüz: parametreler api_key ve action. HTTPS'yi kullanın.
API anahtarlarını yönetmek için hesabınıza girin.
İstek sıklığı ve telefon numarası sayısı sınırsızdır. Günlük veya saatlik kota yoktur.
Sayı 20 dakika için geçerlidir. SMS her 20 saniyede bir kontrol edilir. Hemen iptal edebilirsiniz.
REST'de benzersiz bir Idempotency-Key numara tahsisi, tekrar tahsisi, retry ve ödeme talepleri için gereklidir. İsteğe bağlıdır ancak handler_api.php'de önerilir. Bir ağ isteğini yeniden denediğinizde anahtarı yeniden kullanın; yeni bir işlem için yeni bir anahtar kullanın.
API anahtarının kapsamı
Bir anahtarı belirli hizmetlere, ülkelere ve sağlayıcılara bağlayabilirsiniz. Boş listeler mevcut tüm seçeneklere izin verir.
{
"label": "Yazılımım",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} adı ve policy'yi tamamen değiştirir. Sır yalnızca oluşturulduğunda gösterilir.
Toplamda %10. Yazılım koduyla birlikte %5 + %5.
Numara verirken lütfen belirtin ref yazılımın sahibi. İstek, kullanıcının anahtarı tarafından yetkilendirilir. Kod "Yönlendirmeler" bölümünde ve GET /api/v1/referrals → software_ref.
| Talep | Davet eden | Yazılım |
|---|---|---|
| ref olmadan | 10% | — |
| ref ile | 5% | 5% |
| ref ile yönlendiren yok | — | 5% |
Platform, ikramiyeyi kullanıcının kazancını azaltmadan ödüyor. Yazılımın sahibi ve yönlendiren aynı kişi olabilir. Kullanıcı kendi kodunu kullanamaz.
Şartlar bir oturum oluşturulduğunda belirlenir; SMS ve retry okunması bunları değiştirmez. Yeni bir tekrar oturumu için ref'yı tekrar gönderin. Tarife hesaplamasında, USD 0.003 kullanıcı ödülü, yazılım sahibine ve referans sağlayıcıya USD 0.00015 verir. Toplam bonus ise USD 0.00030'dır.
API komutları
11 XVBC tarzı yöntem artı SMScash bakiyeniz.
GETgetNumberBir numara al+
Bir oturum oluşturur ve kullanıcı için uygun bir numara ayırır. Ücret ve referans paylarının alıcıları tahsis sırasında belirlenir; kod içeren bir SMS geldiğinde kazanç bakiyeye eklenir.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
api_key* | string | Kullanıcının kişisel API anahtarı. |
service* | string | Mevcut servis kodları. Cevap API anahtarının alanıyla sınırlıdır. |
country* | integer | getCountries'den ID'yi alın. |
operator | string | operators/getOperators (API)'den ID'yi alın. operator=1 · any/0 |
session_duration | integer | Süre 20 dakika sürer. 20 geçiş yapın veya bu parametreyi eklemeyin. |
with_operator | integer | 1 yanıta operatör ID’sini ekler; 0 veya parametrenin atlanması üç bölüm döndürür. |
ref | string | Yazılım sahibinin genel kodu: Kendisi için %5 ve davet eden için %5. ref olmadan - davet edene %10. |
* Gerekli parametre. Tüm isteklerde ayrıca action=getNumber'yi de iletin.
Örnek istek
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)Yanıtlar
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- Otomatik seçim: son saatte, ardından 24 saatte en çok kod. Numara yoksa sonraki operatör.
- Idempotency-Key'yi iletin: aynı anahtarla aynı istek önceki oturumu döndürür. Parametrelerin değiştirilmesi IDEMPOTENCY_CONFLICT'yi çağırır.
- Havuzu olmayan sayısal bir ülke EMPTY_POOL'yi verir; yanlış ülke formatı BAD_COUNTRY'dir.
- Silinmiş bir oturumun anahtarı hala kullanılır: o anahtara göre yeniden dağıtım yapıldığında SESSION_CLOSED döner ve başka bir numara verilmez.
- Numara isteğinin sonucu doğrulanmadı. İkinci bir numara verilmemesi için otomatik tekrar kapatıldı.
GETgetNumbersStatusMüsaitliği kontrol et+
Hizmete ve ülkeye göre kullanılabilir telefon numarası sayısı.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
api_key* | string | Kullanıcının kişisel API anahtarı. |
country* | integer | getCountries'den ID'yi alın. |
* Gerekli parametre. Tüm isteklerde ayrıca action=getNumbersStatus'yi de iletin.
Örnek istek
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())Yanıtlar
{
"go_0": 0
}- _0 son eki, belirli bir işleci olmayan bir seçim anlamına gelir.
- Stok, sağlayıcının genel havuzunu gösterir. Seçilen kanalın uygunluğu numara verilirken kontrol edilir.
GETgetStatusEn son kodu alın+
Oturum durumu ve son SMS kodu için kolay talep. Kodun başındaki sıfırlar korunur.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
api_key* | string | Kullanıcının kişisel API anahtarı. |
id* | integer | Numara verildiğinde alınan oturumunuzun ID'si. |
* Gerekli parametre. Tüm isteklerde ayrıca action=getStatus'yi de iletin.
Örnek istek
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)Yanıtlar
STATUS_WAIT_CODESTATUS_OK:001234STATUS_CANCELNO_ACTIVATION- Her 20 saniye de bir kez anket yapın. Bir mesajı tekrar okumak yeni bir ödeme oluşturmaz.
- retry'den sonra eski kod döndürülmez: getStatus sonraki SMS'yi bekler.
- SMS içermeyen bir sayı silindikten sonra, getStatus ve getSms STATUS_CANCEL’e geri döner; getSmsFull kapalı durum, boş bir telefon ve boş bir SMS listesi durumuna geri döner. REST, /activations/{id} ve /sms 404 NO_ACTIVATION’e geri döner.
GETsetStatusOturumu yönet+
Bitim, iptal veya yeniden başlatma bekleniyor SMS. Sırasının sonu süresi aynı kalıyor.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
api_key* | string | Kullanıcının kişisel API anahtarı. |
id* | integer | Numara verildiğinde alınan oturumunuzun ID'si. |
status* | integer | 3 — oturumu genişletmeden bir sonraki kodı bekleyin; 6 — SMS sonrasında bitirin; 8 — hemen iptal edin. |
* Gerekli parametre. Tüm isteklerde ayrıca action=setStatus'yi de iletin.
Örnek istek
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)Yanıtlar
ACCESS_RETRY_GETACCESS_ACTIVATIONACCESS_CANCEL- Bir sonraki kodun gelmesini bekleyerek 20 dakika süresi içinde tekrar deneyin. Sorun ve süreler değişmez.
- Durum=3 için Idempotency-Key kullanın: isteğin tekrarlanması halihazırda alınmış olan yeni kodu sıfırlamayacaktır. SMS'nin geçmişi mevcut olmaya devam ediyor.
- İptal, daha önce kazanılan tutarı silmez.
- Sadece SMS koduna sahip rakamlar tarihte saklanır. Kodu olmayan iptal edilmiş ve süresi dolmuş rakamlar silinir.
GETgetRepeatNumberAynı numarayı tekrar ver+
Geçmişinizden belirli bir numarayla yeni bir oturum açar. Aynı ülkede mevcut olan başka bir hizmeti seçebilirsiniz.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
api_key* | string | Kullanıcının kişisel API anahtarı. |
number* | string | Eski numaran. Yalnızca sayılara ve isteğe bağlı olarak baştaki +'ya izin verilir. |
service* | string | Mevcut servis kodları. Cevap API anahtarının alanıyla sınırlıdır. |
session_duration | integer | Süre 20 dakika sürer. 20 geçiş yapın veya bu parametreyi eklemeyin. |
with_operator | integer | 1 yanıta operatör ID’sini ekler; 0 veya parametrenin atlanması üç bölüm döndürür. |
ref | string | Yazılım sahibinin genel kodu: Kendisi için %5 ve davet eden için %5. ref olmadan - davet edene %10. |
operator | string | operators/getOperators (API)'den ID'yi alın. operator=1 · any/0 |
* Gerekli parametre. Tüm isteklerde ayrıca action=getRepeatNumber'yi de iletin.
Örnek istek
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)Yanıtlar
ACCESS_NUMBER:43:380670000000NUMBER_IN_USE- Öncelikle mevcut oturumunuzu sonlandırın veya iptal edin. Numaranın meşgul olması durumunda yeniden düzenleme yapılmaz.
- Yeni oturum yeni bir ID ve mevcut tarifeyi alır. Eski SMS buna kopyalanmaz. ref yeniden ayarlandı.
- SMScash yalnızca bu hesabın geçmişindeki sayıların tekrarlanmasına izin verir. Ülke numarasıyla tanımlanır.
- Silinmiş bir oturumun anahtarı hala kullanılır: o anahtara göre yeniden dağıtım yapıldığında SESSION_CLOSED döner ve başka bir numara verilmez.
GETgetSmsFullSMS'yi JSON olarak alın+
ID, gönderen, kod, metin ve ülke, hizmet ve tedarikçi verilerini içeren tüm mesajların yapılandırılmış geçmişi.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
api_key* | string | Kullanıcının kişisel API anahtarı. |
id* | integer | Numara verildiğinde alınan oturumunuzun ID'si. |
* Gerekli parametre. Tüm isteklerde ayrıca action=getSmsFull'yi de iletin.
Örnek istek
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())Yanıtlar
{
"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"
}- Entegrasyon için tercih edilen format. Yalnızca yeni mesajları işlemek için sms[].id'yi unutmayın.
- Sayısal durum SMScash: 1 - etkin, 6 - tamamlandı, 8 - iptal edildi veya süresi dolmuş. status_name bekleme, alınan, biten, iptal edilen, süresi dolan arasındaki ayrımları yapar.
- Bir oturum sona erdikten sonra alınan kodlar hala kullanılabilir. Büyük miktarlarda, after_id ile REST /activations/{id}/sms kullanın.
- SMS içermeyen bir sayı silindikten sonra, getStatus ve getSms STATUS_CANCEL’e geri döner; getSmsFull kapalı durum, boş bir telefon ve boş bir SMS listesi durumuna geri döner. REST, /activations/{id} ve /sms 404 NO_ACTIVATION’e geri döner.
GETgetSmsSMS'yi metin dizesi olarak alın+
Mevcut istemciler için SMS geçmişinin tamamını dize biçiminde döndürür.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
api_key* | string | Kullanıcının kişisel API anahtarı. |
id* | integer | Numara verildiğinde alınan oturumunuzun ID'si. |
* Gerekli parametre. Tüm isteklerde ayrıca action=getSms'yi de iletin.
Örnek istek
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)Yanıtlar
STATUS_OK:2026-10-09T12:00:00Z|001234|Код подтверждения: 001234STATUS_WAIT_CODESTATUS_CANCEL- Mesaj formatı: zaman|kod|metin. Birden fazla mesaj iki nokta üst üste işaretiyle ayrılır.
- SMS metninin kendisi iki nokta üst üste ve dikey çubuklar içerebilir. Güvenilir ayrıştırma için getSmsFull kullanın.
GETgetServicesHizmetler+
Mevcut servis kodları. Cevap API anahtarının alanıyla sınırlıdır.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
api_key* | string | Kullanıcının kişisel API anahtarı. |
country | integer | getCountries'den ID'yi alın. |
* Gerekli parametre. Tüm isteklerde ayrıca action=getServices'yi de iletin.
Örnek istek
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())Yanıtlar
{
"go": {
"name": "Google",
"code": "go"
}
}- Hizmet dizini tedarikçiler arasında paylaşılır. Sayfa sayısı mevcutluğu ayrı olarak kontrol edilir.
GETgetCountriesÜlkeler+
Seçilen kanaldaki ülkelerin kimlikleri, isimleri ve arama kodları.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
api_key* | string | Kullanıcının kişisel API anahtarı. |
* Gerekli parametre. Tüm isteklerde ayrıca action=getCountries'yi de iletin.
Örnek istek
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())Yanıtlar
{
"86": {
"id": 86,
"name": "Italy",
"phone_code": "39"
}
}GETgetOperatorsOperatörler+
Kullanılabilir operatörler: API kimliği, ad ve ödül bekletme süresi.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
api_key* | string | Kullanıcının kişisel API anahtarı. |
country | integer | getCountries'den ID'yi alın. |
operator | string | operators/getOperators (API)'den ID'yi alın. operator=1 · any/0 |
* Gerekli parametre. Tüm isteklerde ayrıca action=getOperators'yi de iletin.
Örnek istek
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())Yanıtlar
{
"1": {
"id": 1,
"provider_id": 1,
"operator": 1,
"name": "Оператор 1",
"earnings_hold_days": 45
}
}- operators/getOperators (API)'den ID'yi alın.
GETgetRewardsSMS için ödül+
Oranlar ülkeye bağlıdır. Tüm tablo miktarları ödenen SMS başına verilmiştir.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
api_key* | string | Kullanıcının kişisel API anahtarı. |
country | integer | getCountries'den ID'yi alın. |
service | string | Mevcut servis kodları. Cevap API anahtarının alanıyla sınırlıdır. |
operator | string | operators/getOperators (API)'den ID'yi alın. operator=1 · any/0 |
* Gerekli parametre. Tüm isteklerde ayrıca action=getRewards'yi de iletin.
Örnek istek
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())Yanıtlar
{
"59": {
"vi": {
"1": "0.01000000",
"3": "0.00500000"
}
}
}{}- USD tarife tutarları 8 ondalık basamakla tam ondalık diziler olarak verilir:
- Anahtarınızın kullanabileceği etkin sağlayıcılar.
- country ID → service code → operator ID → reward (USD)
GETgetBalanceKullanıcı bakiyesi+
İlave SMScash: tahakkuklar, yönlendirme ikramiyeleri ve ödeme talepleri dikkate alınarak mevcut bakiye.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
api_key* | string | Kullanıcının kişisel API anahtarı. |
* Gerekli parametre. Tüm isteklerde ayrıca action=getBalance'yi de iletin.
Örnek istek
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)Yanıtlar
ACCESS_BALANCE:0.00- getBalance kullanılabilir USD bakiyesini 8 ondalık basamağa kadar döndürür.
- Yalnızca bekletme süresi sona ermiş tutarlar çekilebilir.
GETgetHoldBalanceBekletiliyor+
SMS alındıktan sonra kazanç, sağlayıcının belirlediği süre boyunca bekletilir. Belirtilen tarihte tutar otomatik olarak çekilebilir hâle gelir.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
api_key* | string | Kullanıcının kişisel API anahtarı. |
* Gerekli parametre. Tüm isteklerde ayrıca action=getHoldBalance'yi de iletin.
Örnek istek
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)Yanıtlar
ACCESS_HOLD_BALANCE:34.50000001- SMScash · getHoldBalance · USD · 8
- Yalnızca bekletme süresi sona ermiş tutarlar çekilebilir.
Yanıt kodları ve tekrarlanan istekler
handler_api.php'de iş sonuçları genellikle HTTP 200 ile birlikte gelir. Gövde metnini kontrol edin. Dizinler ve getSmsFull, başarılı olursa JSON'yi döndürür; hatalar her zaman metindir.
| Kod | HTTP | Nedeni ve sonraki adım |
|---|---|---|
TARIFF_NOT_CONFIGURED | 200 | Oranlar henüz belirlenmediSMS ödülleri yapılandırıldığında sayı tahsisatı başlayacaktır. |
COUNTRY_BLOCKED | 200 | Bu ülke için sayı tahsisi engellenmiştir.Başka bir ülke seçin. |
BAD_SERVICE | 200 | Bu hizmet için numara tahsisi engellenmiştir.Başka bir hizmet seçin. |
PROVIDER_NOT_READY | 200 | Sayı tahsisi geçici olarak kullanılamıyorAPI kataloglarını yenileyin. |
BAD_KEY | 400 | api_key yok veya geçersiz biçim.İstekteki anahtarı kontrol edin. |
INVALID_API_KEY | 401 | Anahtar bilinmiyor, iptal edilmiş veya hesap devre dışı bırakılmış.Geçerli bir API anahtarı oluşturun. |
BAD_COUNTRY | 400 | ülke eksik veya pozitif bir sayı değil.getCountries'den ID'yi alın. |
BAD_SESSION_DURATION | 400 | Telefon numaraları tam olarak 20 dakika için verilir.Doğru session_duration. |
BAD_REQUEST | 400 | Geçersiz parametre veya Idempotency-Key.Lütfen isteğinizi düzeltin. |
BAD_SERVICE / BAD_OPERATOR / INVALID_PROVIDER | 200 | Bilinmeyen veya devre dışı bırakılan dizin öğesi.API kataloglarını yenileyin. |
BAD_NUMBER | 200 | Yanlış sayı biçimi.Sayıyı rakamla verin. |
BAD_ACTION / BAD_STATUS | 200 | Bilinmeyen komut, ID veya işlem.Ayarları kontrol edin. |
EMPTY_POOL | 200 | Şu anda eşleşen telefon numarası yok.10-30 saniye sonra tekrarlayın veya filtreleri değiştirin. |
NUMBER_IN_USE | 200 | Belirli bir sayı aktif bir oturum tarafından kullanılıyor.Oturumunuzu sonlandırın veya başka bir numara seçin. |
NO_ACTIVATION | 200 | Oturum veya önceki numara hesabınıza ait değil.ID'yi ve anahtarı kontrol edin. |
SESSION_CLOSED / SMS_REQUIRED | 200 | Durum geçişi şu anda kullanılamıyor.SMS'nin durumunu ve kullanılabilirliğini kontrol edin. |
SCOPE_BLOCKED | 200 | Hizmet, ülke veya satıcının anahtar için yetkisi yok.API anahtarının kapsamını güncelleyin. |
IDEMPOTENCY_CONFLICT | 200 | Bu sorgu anahtarı zaten diğer parametrelerle ilişkilendirilmiş.Yeni bir işlem için başka bir Idempotency-Key oluşturun. |
BAD_REF / SELF_REF | 400 | Yazılım kodu bilinmiyor, devre dışı veya kullanıcının kendisine ait.Yazılım sahibinin kodunu iletin. |
INTERNAL_ERROR | 500 | Geçici sunucu veya satıcı hatası.Bir gecikmeyle ve aynı Idempotency-Key ile tekrarlayın. |
ALLOCATION_PENDING | 200 | Numara isteği zaten işleniyor. Aynı Idempotency-Key ile tekrar dene.Numara isteği zaten işleniyor. Aynı Idempotency-Key ile tekrar dene. |
ALLOCATION_UNCERTAIN | 200 | Numara isteğinin sonucu doğrulanmadı. İkinci bir numara verilmemesi için otomatik tekrar kapatıldı.Numara isteğinin sonucu doğrulanmadı. İkinci bir numara verilmemesi için otomatik tekrar kapatıldı. |
REST bir nesne döndürür {"error":{"code":"…","message":"…"}} ve normal HTTP durumları 400/401/403/404/409/503.
{
"error": {
"code": "BAD_REQUEST",
"message": "İstek alanlarını kontrol edin.",
"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 entegrasyonlar için REST
USD tarife tutarları 8 ondalık basamakla tam ondalık diziler olarak verilir: 0.00300000 USD.
Bakiye para birimi USD’dir. İstek ve yanıt şemaları şu belgede yer alır: OpenAPI.
/api/v1/catalogHizmetler ve ülkeler/api/v1/tariffsSMS ülkelere göre ödül oranları/api/v1/offersOranlar ve ödüller/api/v1/servicesRehber/api/v1/countriesRehber/api/v1/operatorsRehber/api/v1/availability?country=1Numara kullanılabilirliği/api/v1/activationsYeni oturum/api/v1/activations/batch?ids=42,43Birden fazla numarayı kontrol et/api/v1/activationsEn yeni 200 oturumları: scope=history, bekleme veya tüm/api/v1/activations/{id}Oturum ve mesajlar/api/v1/activations/{id}/sms?after_id=0&limit=100İmleçli yeni SMS/api/v1/activations/{id}/retrySMS bekleniyor/api/v1/activations/{id}/finishTamamlama/api/v1/activations/{id}/cancelİptal/api/v1/activations/repeatNumaranın yeniden düzenlenmesi/api/v1/keysAPI tuşları/api/v1/keysBir anahtar oluşturun/api/v1/keys/{id}Adı değiştirin veya policy/api/v1/keys/{id}Anahtarı iptal et/api/v1/referralsReferans kodu ve kazançlar/api/v1/summaryBakiye ve Özet/api/v1/balanceBekletiliyor/api/v1/ledgerKazanç defteri/api/v1/withdrawalsÖdeme talepleri/api/v1/withdrawalsBir istek oluştur/api/v1/statisticsGenel istatistikler/api/v1/earnings/holdsBekletilen kazançlarYalnızca yeni SMS alınıyor
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": "Kod: 001234",
"sender": "Service",
"received_at": "2026-10-09T12:00:00Z"
}
],
"next_cursor": 101,
"has_more": false
}next_cursor'yi kaydedin ve after_id olarak aktarın. has_more=true ise sonraki sayfa hemen okunabilir. limit: 1–200. Oturumlar ve SMS yalnızca sahibin kullanımına açıktır.