SMS aktivizācijas API
Divi veidi: ar sms-activate protokolu saderīgs endpoint, lai esošā programmatūra pārietu, nomainot URL un atslēgu, un JSON REST API jaunām integrācijām. Abi izmanto to pašu API atslēgu no jūsu paneļa.
Iegūstiet API atslēgu
Izveidojiet kontu, atveriet paneli un ģenerējiet atslēgu sadaļā API piekļuve. Glabājiet to slepenībā: ikviens ar atslēgu var tērēt jūsu atlikumu.
ReģistrētiesTipiska plūsma
- Izsauciet getNumber ar pakalpojumu un valsti.
- Izmantojiet numuru mērķa lietotnē.
- Ik pēc dažām sekundēm vaicājiet getStatus, līdz saņemat STATUS_OK.
- Izsauciet setStatus ar 6, lai pabeigtu, vai ar 8, lai atceltu, ja kods nepienāca.
Ar sms-activate saderīgs endpoint
Sūtiet GET vai POST pieprasījumus ar parametriem api_key un action. Atbildes ir vienkāršs teksts, tieši tāpat kā sms-activate.
https://smsrota.com/stubs/handler_api.php?api_key=KEY&action=getNumber&service=wa&country=187
Darbības
| Darbība | Parametri | Atbilde |
|---|---|---|
| getBalance | — | ACCESS_BALANCE:12.5000 |
| getPrices | service?, country? | {"187":{"wa":{"cost":0.4,"count":1563}}} |
| getNumber | service, country, maxPrice? | ACCESS_NUMBER:48151623:15550123456 |
| getStatus | id | STATUS_WAIT_CODE · STATUS_WAIT_RETRY:code · STATUS_OK:code · STATUS_CANCEL |
| setStatus | id, status | ACCESS_RETRY_GET · ACCESS_ACTIVATION · ACCESS_CANCEL |
| getRentNumber | service, country, rent_time (4/24/72/168/720) | {"status":"success","phone":{"id":31,"endDate":"…","number":"447700900001"}} |
| getRentStatus | id | {"status":"success","quantity":"1","values":{"0":{"phoneFrom":"WhatsApp","text":"…"}}} |
| setRentStatus | id, status (1 = finish, 2 = cancel) | {"status":"success"} |
| continueRentNumber | id, rent_time | {"status":"success","phone":{…}} |
setStatus vērtības
- 3
- Pieprasīt jaunu kodu uz to pašu numuru
- 6
- Pabeigt aktivizāciju
- 8
- Atcelt un atmaksāt (iespējams divas minūtes pēc pirkuma)
JSON REST API
Sūtiet atslēgu Authorization galvenē kā "Bearer KEY". Summas ir virknes ASV dolāros ar četrām zīmēm aiz komata.
GET https://smsrota.com/v1/balance
GET https://smsrota.com/v1/prices?service=wa
POST https://smsrota.com/v1/activations {"service":"wa","country":"187"}
GET https://smsrota.com/v1/activations/:id
POST https://smsrota.com/v1/activations/:id/retry
POST https://smsrota.com/v1/activations/:id/complete
POST https://smsrota.com/v1/activations/:id/cancel
GET https://smsrota.com/v1/rent/prices?service=wa&hours=24
POST https://smsrota.com/v1/rentals {"service":"full","country":"16","hours":24}
GET https://smsrota.com/v1/rentals/:id
POST https://smsrota.com/v1/rentals/:id/extend {"hours":24}
POST https://smsrota.com/v1/rentals/:id/finish
POST https://smsrota.com/v1/rentals/:id/cancel
POST https://smsrota.com/v1/rentals/:id/dispute {"reason":"no_sms"}
PUT https://smsrota.com/v1/webhook {"url":"https://example.com/sms-webhook"}
POST https://smsrota.com/v1/webhook/test
GET https://smsrota.com/v1/webhook/eventsTīmekļa āķi
Iestatiet URL sava paneļa sadaļā API piekļuve. Par katru notikumu mēs nosūtām POST ar JSON saturu. Atbildiet ar jebkuru 2xx statusu 10 sekunžu laikā; citādi mēģināsim vēlreiz pēc 1, 5, 30, 120, 360 un 720 minūtēm.
- activation.sms_received
- Jūsu pirktajam numuram pienāca kods.
- activation.cancelled
- Numurs tika atcelts vai beidzās, un nauda atgriezās jūsu bilancē.
- rental.sms_received
- Nomātam numuram pienāca SMS.
- rental.ended
- Noma beidzās vai tika atcelta.
Satura piemērs
{
"id": "evt_1042",
"type": "activation.sms_received",
"createdAt": "2026-11-01T10:00:00.000Z",
"data": {
"activationId": 48151623,
"service": "wa",
"country": "187",
"phone": "15550123456",
"code": "123456"
}
}Paraksta pārbaude
Katram pieprasījumam ir galvene X-Webhook-Signature, piemēram, t=1730000000,v1=…, kur v1 ir "t.body" heksadecimālais HMAC-SHA256, kas izveidots ar jūsu parakstīšanas atslēgu. Noraidiet pieprasījumu, ja paraksts nesakrīt vai t ir vecāks par 5 minūtēm.
import { createHmac, timingSafeEqual } from "node:crypto";
// rawBody: the request body exactly as received, before JSON parsing.
function verify(rawBody, header, secret) {
const { t, v1 } = Object.fromEntries(header.split(",").map((p) => p.split("=")));
const expected = createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
const fresh = Math.abs(Date.now() / 1000 - Number(t)) < 300;
return fresh && v1.length === expected.length && timingSafeEqual(Buffer.from(v1), Buffer.from(expected));
}Kļūdas
- BAD_KEY
- API atslēga ir nepareiza vai tika nomainīta.
- NO_NUMBERS
- Šim pakalpojumam un valstij pašlaik nav pieejamības.
- NO_BALANCE
- Jūsu atlikums nav pietiekams šim numuram.
- EARLY_CANCEL_DENIED
- Atcelt var divas minūtes pēc pirkuma.
- NO_ACTIVATION
- Aktivizācijas ID neeksistē vai nepieder jums.