Documentação da API
Comece com uma solicitação
Crie uma chave API no seu painel de controle, obtenha um número e verifique as mensagens a cada 10 segundos. O pagamento é creditado quando um SMS com um código chega; ler novamente não afeta seu saldo.
https://smscash.org/api/v1https://smscash.org/stubs/handler_api.phpcurl --get 'https://smscash.org/stubs/handler_api.php' \
--data-urlencode 'api_key=YOUR_API_KEY' \
--data-urlencode 'action=getNumber' \
--data-urlencode 'service=go' \
--data-urlencode 'country=86'Endereço de interface compatível alternativo: /handler_api.php. As integrações REST existentes continuam funcionando.
Construtor de pedidos
https://smscash.org/stubs/handler_api.phpcurl --max-time 15 --fail-with-body 'https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1'package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
endpoint, err := url.Parse("https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1")
if err != nil { panic(err) }
query := endpoint.Query()
query.Set("api_key", os.Getenv("SMSCASH_API_KEY"))
endpoint.RawQuery = query.Encode()
req, err := http.NewRequest("GET", endpoint.String(), nil)
if err != nil { panic(err) }
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) }
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil { panic(err) }
fmt.Println(res.StatusCode, string(body))
}// Node.js 18+: set SMSCASH_API_KEY in your environment.
const url = new URL("https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1");
url.searchParams.set("api_key", process.env.SMSCASH_API_KEY);
const response = await fetch(url, {
method: 'GET',
signal: AbortSignal.timeout(15000),
redirect: 'error',
});
const result = await response.text();
console.log(response.status, result);
// SMS codes are strings: keep leading zeros. Never repeat issuance automatically.import json
import os
import urllib.error
import urllib.parse
import urllib.request
class NoRedirect(urllib.request.HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
return None
url = "https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1"
parts = urllib.parse.urlsplit(url)
params = dict(urllib.parse.parse_qsl(parts.query))
params["api_key"] = os.environ["SMSCASH_API_KEY"]
url = urllib.parse.urlunsplit(parts._replace(query=urllib.parse.urlencode(params)))
request = urllib.request.Request(url, method='GET')
try:
with urllib.request.build_opener(NoRedirect).open(request, timeout=15) as response:
result = response.read().decode("utf-8")
print(response.status, result)
except urllib.error.HTTPError as error:
print(error.code, error.read().decode('utf-8'))
raise
# No automatic retries; SMS codes remain strings.A chave não é guardada. Esta verificação não atribui números.
REST para novas integrações
Serviços e países
Escolha um serviço e um país. O pagamento por SMS depende do país.
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)
Obtenha um número
GET /stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86Seleção automática: um fornecedor disponível aleatório.
ACCESS_NUMBER: session ID · phone number
service + country · session_duration: 20
ref: software owner code (optional)
operator: public ID (e.g. 1) or comma-separated IDs (e.g. "1,3")
optional · omitted/any/0: random eligible provider
country: integer · service: string · SMS code: stringO número é válido por 20 minutos. SMS é verificado a cada 10 segundos. Você pode cancelar imediatamente.
Verificar vários números
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": 10
}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 · Em retenção
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 — Disponível; held_balance — Em retenção. USD · 8
Só é possível levantar fundos cujo prazo de retenção terminou.
Clientes prontos a usar
import {SmScash, SmScashError} from './smscash.mjs';
const api = new SmScash(process.env.SMSCASH_API_KEY);
const catalog = await api.catalog({service: 'go', country: 86});
console.log(catalog.rows);
const messages = await api.sms(42, {afterId: 0});
console.log(messages.sms);
const statuses = await api.batch([42]);
const held = await api.holdBalance();
console.log(held); // Exact USD stringimport os
from smscash import SmScash, SmScashError
api = SmScash(os.environ['SMSCASH_API_KEY'])
catalog = api.catalog(service='go', country=86)
print(catalog['rows'])
messages = api.sms(42, after_id=0)
print(messages['sms'])
statuses = api.batch([42])
held = api.hold_balance()
print(held) # Exact USD stringme() · balance() · holdBalance()/hold_balance() · catalog() · activation() · sms() · batch()
setStatus(id, "cancel") / set_status(id, "cancel")
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.phpChave API pessoal do usuário.
Escolha um serviço e um país. O pagamento por SMS depende do país.
| Código | Descrição |
|---|---|
getNumber / getNumberV2 | Obtenha um número |
getStatus / getStatusV2 | Obtenha o código mais recente |
setStatus / finishActivation / cancelActivation | Gerenciar sessão |
getPrices / getNumbersStatus | Verifique a disponibilidade |
getRewards (SMScash) | Recompensa para SMS |
getServicesList / getServices | Serviços |
getCountries / getOperators | Serviços e países |
getActiveActivations | Sessões |
getBalance | Saldo do usuário |
getHoldBalance (SMScash) | Em retenção |
cost = 0 USD · activationCost = 0 USDreward — Recompensa para SMS
curl --get 'https://smscash.org/hero-sms/stubs/handler_api.php' \
--data-urlencode 'api_key=YOUR_API_KEY' \
--data-urlencode 'action=getNumberV2' \
--data-urlencode 'service=go' \
--data-urlencode 'country=86'{
"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, e.g. 1,3); 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.
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.O número é válido por 20 minutos. SMS é verificado a cada 10 segundos. Você pode cancelar imediatamente.
Autenticação e novas tentativas
REST: cabeçalho Authorization: Bearer YOUR_API_KEY. Interface compatível: parâmetros api_key e action. Utilize HTTPS.
Para gerenciar chaves API, insira sua conta.
A frequência de pedidos e a quantidade de números de telefone são ilimitadas. Não há quotas diárias nem horárias.
O número é válido por 20 minutos. SMS é verificado a cada 10 segundos. Você pode cancelar imediatamente.
Âmbito da chave API
Pode associar uma chave a serviços, países e fornecedores específicos. Listas vazias permitem todas as opções disponíveis.
{
"label": "Meu software",
"policy": {
"services": [
"go"
],
"countries": [
86
],
"providers": [
1
]
}
}PATCH /api/v1/keys/{id} muda totalmente o nome e policy. O segredo só é mostrado quando criado.
10% no total. 5% + 5% com código de software.
Ao emitir um número, forneça ref proprietário do software. A solicitação é autorizada pela chave do usuário. O código está na seção "Referências" e em GET /api/v1/referrals → software_ref.
| Solicitação | Quem convidou | Programas |
|---|---|---|
| Sem ref | 10% | — |
| Com ref | 5% | 5% |
| Com ref, sem referenciador | — | 5% |
A plataforma paga o bônus sem reduzir o rendimento do usuário. O proprietário do software e o referenciador podem ser a mesma pessoa. Um usuário não pode usar seu próprio código.
Os termos são fixados quando uma sessão é criada; a leitura de SMS e retry não os altera. Passar ref novamente para uma nova sessão de repetição. No cálculo da tarifa, um recompensamento do usuário de USD 0.003 fornece USD 0.00015 cada um ao proprietário e referidor do software. O bônus total é USD 0.00030.
Comandos API
11 métodos estilo XVBC mais seu saldo SMScash.
GETgetNumberObtenha um número+
Cria uma sessão e reserva um número disponível para o usuário. A taxa de recompensa e os destinatários das referências são fixados na alocação; a recompensa é creditada quando um SMS com um código chega.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
service* | string | Códigos de serviço disponíveis. A resposta está limitada à área da chave API. |
country* | integer | Pegue ID de getCountries. |
operator | string | Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3. operator=1 · operator=1,3 · any/0 |
session_duration | integer | A sessão dura 20 minutos. Passar 20 ou omitir este parâmetro. |
with_operator | integer | 1 adiciona o ID do operador à resposta; 0 ou sua omissão retorna três segmentos. |
ref | string | Публичный код владельца софта: 5% ему и 5% пригласившему. Без ref — 10% пригласившему. Неизвестный, отключённый, некорректный или собственный ref игнорируется: запрос продолжается без бонуса владельцу софта. Действующие коды и прежние условия уже выданных сессий сохраняются. |
* Parâmetro obrigatório. Em todas as requisições passe também action=getNumber.
Solicitação de exemplo
curl 'https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1'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) }
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");
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",
timeout=15,
)
print(response.status_code, response.text)Respostas
ACCESS_NUMBER:42:380670000000:1EMPTY_POOL- Seleção automática: um fornecedor disponível aleatório.
- Um país numérico sem pool fornece EMPTY_POOL; o formato de país errado é BAD_COUNTRY.
- A chave de uma sessão excluída continua sendo usada: a alocação com essa chave retorna SESSION_CLOSED e não gera outro número.
- O resultado da atribuição não está confirmado. A repetição automática está desativada para evitar atribuir um segundo número.
GETgetNumbersStatusVerifique a disponibilidade+
Quantidade de números de telefone disponíveis por serviço e país.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
country* | integer | Pegue ID de getCountries. |
* Parâmetro obrigatório. Em todas as requisições passe também action=getNumbersStatus.
Solicitação de exemplo
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())Respostas
{
"go_0": 0
}- O sufixo _0 significa uma escolha sem um operador específico.
- A disponibilidade refere-se ao conjunto total do fornecedor. O canal escolhido é verificado ao atribuir um número.
GETgetStatusObtenha o código mais recente+
Solicitação fácil de status da sessão e último código SMS. Os zeros à esquerda no código são preservados.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
id* | integer | ID da sua sessão, recebido quando o número foi emitido. |
* Parâmetro obrigatório. Em todas as requisições passe também action=getStatus.
Solicitação de exemplo
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)Respostas
STATUS_WAIT_CODESTATUS_OK:001234STATUS_CANCELNO_ACTIVATION- Faça uma pesquisa a cada 20 segundos. Ler uma mensagem novamente não gera outro pagamento.
- Após retry o código antigo não é retornado: getStatus aguarda o próximo SMS.
- Após a eliminação de um número sem SMS, getStatus e getSms retornam STATUS_CANCEL; getSmsFull retorna o status fechado, um telefone vazio e uma lista de SMS vazia. REST /activations/{id} e /sms retornam 404 NO_ACTIVATION.
GETsetStatusGerenciar sessão+
Finalizações, cancelamentos ou retomadas de espera por SMS. O prazo da sessão permanece o mesmo.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
id* | integer | ID da sua sessão, recebido quando o número foi emitido. |
status* | integer | 3 — espere pelo próximo código sem expandir a sessão; 6 — termine após SMS; 8 — cancele imediatamente. |
* Parâmetro obrigatório. Em todas as requisições passe também action=setStatus.
Solicitação de exemplo
curl 'https://smscash.org/stubs/handler_api.php?action=setStatus&api_key=YOUR_API_KEY&id=42&status=3'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) }
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");
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",
timeout=15,
)
print(response.status_code, response.text)Respostas
ACCESS_RETRY_GETACCESS_ACTIVATIONACCESS_CANCEL- Tente novamente e aguarde o próximo código dentro dos 20 minutos originais. Os tempos de problema e expiração não mudam.
- O cancelamento não retira as recompensas já obtidas.
- Apenas os números com um código SMS são mantidos na história. Os números cancelados e expirados sem código são excluídos.
GETgetRepeatNumberEmitir o mesmo número novamente+
Abre uma nova sessão com um número específico do seu histórico. Você pode selecionar outro serviço disponível no mesmo país.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
number* | string | Seu número antigo. Somente números e um + opcional inicial são permitidos. |
service* | string | Códigos de serviço disponíveis. A resposta está limitada à área da chave API. |
session_duration | integer | A sessão dura 20 minutos. Passar 20 ou omitir este parâmetro. |
with_operator | integer | 1 adiciona o ID do operador à resposta; 0 ou sua omissão retorna três segmentos. |
ref | string | Публичный код владельца софта: 5% ему и 5% пригласившему. Без ref — 10% пригласившему. Неизвестный, отключённый, некорректный или собственный ref игнорируется: запрос продолжается без бонуса владельцу софта. Действующие коды и прежние условия уже выданных сессий сохраняются. |
operator | string | Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3. operator=1 · operator=1,3 · any/0 |
* Parâmetro obrigatório. Em todas as requisições passe também action=getRepeatNumber.
Solicitação de exemplo
curl 'https://smscash.org/stubs/handler_api.php?action=getRepeatNumber&api_key=YOUR_API_KEY&number=380670000000&service=go'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) }
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");
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",
timeout=15,
)
print(response.status_code, response.text)Respostas
ACCESS_NUMBER:43:380670000000NUMBER_IN_USE- Primeiro, encerre ou cancele sua sessão atual. Se o número estiver ocupado, a reemissão não será realizada.
- A nova sessão recebe um novo ID e o tarifário atual. SMS antigos não são copiados para ele. ref é definido novamente.
- SMScash permite repetir apenas números do histórico desta conta. O país é identificado por número.
- A chave de uma sessão excluída continua sendo usada: a alocação com essa chave retorna SESSION_CLOSED e não gera outro número.
GETgetSmsFullObtenha SMS como JSON+
Histórico estruturado de todas as mensagens com ID, remetente, código, texto e dados de país, serviço e fornecedor.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
id* | integer | ID da sua sessão, recebido quando o número foi emitido. |
* Parâmetro obrigatório. Em todas as requisições passe também action=getSmsFull.
Solicitação de exemplo
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())Respostas
{
"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": "operator=1"
}
}
],
"expires_at": "2026-10-09T12:20:00Z"
}- Formato preferido para integração. Lembre-se de sms[].id para processar apenas novas mensagens.
- Status numérico SMScash: 1 - ativo, 6 - concluído, 8 - cancelado ou expirado. status_name distingue entre espera, recebido, finalizado, cancelado, expirado.
- Os códigos recebidos permanecem disponíveis após o término da sessão. Para volumes grandes, use REST /activations/{id}/sms com after_id.
- Após a eliminação de um número sem SMS, getStatus e getSms retornam STATUS_CANCEL; getSmsFull retorna o status fechado, um telefone vazio e uma lista de SMS vazia. REST /activations/{id} e /sms retornam 404 NO_ACTIVATION.
GETgetSmsObtenha SMS como uma string de texto+
Retorna todo o histórico SMS em formato de string para clientes existentes.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
id* | integer | ID da sua sessão, recebido quando o número foi emitido. |
* Parâmetro obrigatório. Em todas as requisições passe também action=getSms.
Solicitação de exemplo
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)Respostas
STATUS_OK:2026-10-09T12:00:00Z|001234|Код подтверждения: 001234STATUS_WAIT_CODESTATUS_CANCEL- Formato da mensagem: hora|código|texto. Várias mensagens são separadas por dois pontos.
- O próprio texto SMS pode conter dois pontos e barras verticais. Para uma análise confiável, use getSmsFull.
GETgetServicesServiços+
Códigos de serviço disponíveis. A resposta está limitada à área da chave API.
Diretório
Publicação…
| Nome | Código do serviço service |
|---|
O diretório de serviços é compartilhado entre os fornecedores. A disponibilidade do número é verificada separadamente.
Pode associar uma chave a serviços, países e fornecedores específicos. Listas vazias permitem todas as opções disponíveis.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
country | integer | Pegue ID de getCountries. |
* Parâmetro obrigatório. Em todas as requisições passe também action=getServices.
Solicitação de exemplo
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())Respostas
{
"go": {
"name": "Google",
"code": "go"
}
}- O diretório de serviços é compartilhado entre os fornecedores. A disponibilidade do número é verificada separadamente.
GETgetCountriesPaíses+
IDs, nomes e códigos de chamada para os países no canal selecionado.
Diretório
Publicação…
| Nome | ID do país country |
|---|
Pode associar uma chave a serviços, países e fornecedores específicos. Listas vazias permitem todas as opções disponíveis.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
* Parâmetro obrigatório. Em todas as requisições passe também action=getCountries.
Solicitação de exemplo
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())Respostas
{
"86": {
"id": 86,
"name": "Italy",
"phone_code": "39"
}
}GETgetOperatorsOperadores+
Operadores disponíveis: ID da API, nome e período de retenção.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
country | integer | Pegue ID de getCountries. |
operator | string | Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3. operator=1 · operator=1,3 · any/0 |
* Parâmetro obrigatório. Em todas as requisições passe também action=getOperators.
Solicitação de exemplo
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())Respostas
{
"1": {
"id": 1,
"provider_id": 1,
"operator": 1,
"name": "operator=1",
"earnings_hold_days": 45
}
}- Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3.
GETgetRewardsRecompensa para SMS+
As taxas dependem do país. Todas as quantias na tabela são por SMS pago.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
country | integer | Pegue ID de getCountries. |
service | string | Códigos de serviço disponíveis. A resposta está limitada à área da chave API. |
operator | string | Возьмите ID из operators/getOperators (API). ID поставщиков, через запятую: operator=1,3. operator=1 · operator=1,3 · any/0 |
* Parâmetro obrigatório. Em todas as requisições passe também action=getRewards.
Solicitação de exemplo
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())Respostas
{
"59": {
"vi": {
"1": "0.01000000",
"3": "0.00500000"
}
}
}{}- USDAs quantias de tarifa são retornadas como strings decimais exatas com 8 casas decimais:
- Provedores habilitados disponíveis para sua chave.
- country ID → service code → operator ID → reward (USD)
GETgetTopCountriesByServiceТоп стран по сервису+
До 10 стран с лучшей доставкой смс кодов за последние 24 часа
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
service* | string | Код сервиса из getServices. |
* Parâmetro obrigatório. Em todas as requisições passe também action=getTopCountriesByService.
Solicitação de exemplo
curl 'https://smscash.org/stubs/handler_api.php?action=getTopCountriesByService&api_key=YOUR_API_KEY&service=go'package main
import (
"fmt"
"io"
"net/http"
"time"
)
func main() {
req, err := http.NewRequest("GET", "https://smscash.org/stubs/handler_api.php?action=getTopCountriesByService&api_key=YOUR_API_KEY&service=go", 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=getTopCountriesByService&api_key=YOUR_API_KEY&service=go");
const result = await response.json();
console.log(response.status, result);import requests
response = requests.get(
"https://smscash.org/stubs/handler_api.php?action=getTopCountriesByService&api_key=YOUR_API_KEY&service=go",
timeout=15,
)
print(response.status_code, response.json())Respostas
Структура ответа
| Ключ в примере | Descrição | Diretório |
|---|---|---|
["12"], ["36"] | ID do país Первый, внешний уровень JSON. Каждая запись объединяет операторов одной страны. | getCountries |
["12"]["1"], ["12"]["3"] | ID оператора Второй уровень JSON, внутри страны. Это публичный ID оператора (поставщика), который передаётся в параметре operator. | getOperators |
{
"12": {
"1": {
"reward": 0.012,
"count": 542
},
"3": {
"reward": 0.014,
"count": 301
}
},
"36": {
"1": {
"reward": 0.011,
"count": 190
}
}
}{}- В примере ["12"]["1"] — данные оператора 1 в стране 12. ID стран берутся из getCountries, ID операторов — из getOperators.
- reward — действующее личное вознаграждение в USD, JSON-число. count — количество выданных номеров за последние 24 часа, включая сессии без кода.
- Рейтинг рассчитывается как все полученные непустые коды, делённые на все выдачи номеров за последние 24 часа для выбранного сервиса.
- Повторные непустые коды увеличивают числитель; конверсия может превышать 100%. Начальные нули сохраняются.
- Суточная статистика сервиса кэшируется на 10 минут. Тарифы и ограничения ключа проверяются при каждом запросе. Момент среза — в заголовке X-Statistics-As-Of.
- Нет данных или доступных связок — пустой объект {}. Страны с выдачами и нулём кодов имеют нулевую конверсию. Порядок ключей JSON не задаёт места в рейтинге.
GETgetBalanceSaldo do usuário+
Adição SMScash: saldo disponível considerando acumulações, bônus de indicação e solicitações de pagamento.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
* Parâmetro obrigatório. Em todas as requisições passe também action=getBalance.
Solicitação de exemplo
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)Respostas
ACCESS_BALANCE:0.00- getBalance devolve o saldo disponível em USD com até 8 casas decimais.
- Só é possível levantar fundos cujo prazo de retenção terminou.
GETgetHoldBalanceEm retenção+
Após receber um SMS, os ganhos ficam retidos pelo prazo do fornecedor. Na data indicada, o montante fica automaticamente disponível para levantamento.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
api_key* | string | Chave API pessoal do usuário. |
* Parâmetro obrigatório. Em todas as requisições passe também action=getHoldBalance.
Solicitação de exemplo
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)Respostas
ACCESS_HOLD_BALANCE:34.50000001- SMScash · getHoldBalance · USD · 8
- Só é possível levantar fundos cujo prazo de retenção terminou.
Códigos de resposta e solicitações repetidas
Em handler_api.php os resultados de negócios geralmente vêm com HTTP 200. Verifique o corpo do texto. Diretórios e getSmsFull retornam JSON se forem bem-sucedidos; erros são sempre texto.
| Código | HTTP | Causa e próximo passo |
|---|---|---|
TARIFF_NOT_CONFIGURED | 200 | As taxas ainda não foram definidasA alocação de números começará assim que as recompensas SMS forem configuradas. |
COUNTRY_BLOCKED | 200 | A alocação de números para este país está bloqueada.Escolha outro país. |
BAD_SERVICE | 200 | A atribuição de números para este serviço está bloqueada.Escolha outro serviço. |
PROVIDER_NOT_READY | 200 | A alocação de números está temporariamente indisponívelAtualize os catálogos da API. |
BAD_KEY | 400 | Nenhum api_key ou formato inválido.Verifique a chave na solicitação. |
INVALID_API_KEY | 401 | A chave é desconhecida, revogada ou a conta está desativada.Crie uma chave de API válida. |
BAD_COUNTRY | 400 | país está faltando ou não tem um número positivo.Pegue ID de getCountries. |
BAD_SESSION_DURATION | 400 | Os números de telefone são emitidos por exatamente 20 minutos.Correto session_duration. |
BAD_REQUEST | 400 | Verifique os campos da solicitação.Por favor, corrija sua solicitação. |
BAD_SERVICE / BAD_OPERATOR / INVALID_PROVIDER | 200 | Item de diretório desconhecido ou desativado.Atualize os catálogos da API. |
BAD_NUMBER | 200 | Formato numérico incorreto.Dê o número em algarismos. |
BAD_ACTION / BAD_STATUS | 200 | Comando desconhecido, ID ou operação.Verifique as configurações. |
EMPTY_POOL | 200 | Nenhum número de telefone correspondente está disponível no momento.Repita após 10-30 segundos ou troque os filtros. |
NUMBER_IN_USE | 200 | Um número específico é ocupado por uma sessão ativa.Encerre sua sessão ou selecione outro número. |
NO_ACTIVATION | 200 | A sessão ou número anterior não pertence à sua conta.Verifique ID e chave. |
SESSION_CLOSED / SMS_REQUIRED | 200 | A transição de estado não está disponível no momento.Verifique a condição e disponibilidade do SMS. |
SCOPE_BLOCKED | 200 | O serviço, país ou fornecedor não está autorizado para a chave.Atualize o escopo da chave de API. |
INTERNAL_ERROR | 500 | Erro temporário do servidor ou fornecedor.Contatos e suporte · X-Request-ID |
ALLOCATION_PENDING | 200 | EsperandogetActiveActivations · getStatus |
ALLOCATION_UNCERTAIN | 200 | O resultado da atribuição não está confirmado. A repetição automática está desativada para evitar atribuir um segundo número.O resultado da atribuição não está confirmado. A repetição automática está desativada para evitar atribuir um segundo número. |
REST devolve um objeto {"error":{"code":"…","message":"…"}} e status HTTP regular 400/401/403/404/409/503.
{
"error": {
"code": "BAD_REQUEST",
"message": "Verifique os campos da solicitação.",
"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.REST para novas integrações
USDAs quantias de tarifa são retornadas como strings decimais exatas com 8 casas decimais: 0.00300000 USD.
A moeda do saldo é USD. Os esquemas de solicitação e resposta estão disponíveis em OpenAPI.
/api/v1/catalogServiços e países/api/v1/tariffsSMS taxas de recompensa por país/api/v1/offersTaxas e recompensas/api/v1/servicesDiretório/api/v1/countriesDiretório/api/v1/operatorsDiretório/api/v1/availability?country=1Disponibilidade de número/api/v1/activationsNova sessão/api/v1/activations/batch?ids=42,43Verificar vários números/api/v1/activationsÚltimas 200 sessões: scope=history, esperando ou todas/api/v1/activations/{id}Sessão e mensagens/api/v1/activations/{id}/sms?after_id=0&limit=100Novo SMS com cursor/api/v1/activations/{id}/retryEsperando por SMS/api/v1/activations/{id}/finishConclusão/api/v1/activations/{id}/cancelCancelar/api/v1/activations/repeatReemissão de número/api/v1/keysChaves API/api/v1/keysCrie uma chave/api/v1/keys/{id}Alterar nome ou policy/api/v1/keys/{id}Revogar chave/api/v1/referralsCódigo de referência e ganhos/api/v1/summarySaldo e Resumo/api/v1/balanceEm retenção/api/v1/ledgerLivro de ganhos/api/v1/withdrawalsSolicitações de pagamento/api/v1/withdrawalsCrie uma solicitação/api/v1/statisticsEstatísticas gerais/api/v1/earnings/holdsRetenção de ganhosRecebendo apenas novos SMS
GET /api/v1/activations/42/sms?after_id=0&limit=100
Authorization: Bearer YOUR_API_KEY{
"session_id": 42,
"sms": [
{
"id": 101,
"code": "001234",
"text": "Código: 001234",
"sender": "Service",
"received_at": "2026-10-09T12:00:00Z"
}
],
"next_cursor": 101,
"has_more": false
}Salve next_cursor e passe-o adiante como after_id. Se has_more=true, a próxima página poderá ser lida imediatamente. limit: 1–200. Sessões e SMS estão disponíveis apenas para o proprietário.