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ēties

Tipiska plūsma

  1. Izsauciet getNumber ar pakalpojumu un valsti.
  2. Izmantojiet numuru mērķa lietotnē.
  3. Ik pēc dažām sekundēm vaicājiet getStatus, līdz saņemat STATUS_OK.
  4. 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ībaParametriAtbilde
getBalance—ACCESS_BALANCE:12.5000
getPricesservice?, country?{"187":{"wa":{"cost":0.4,"count":1563}}}
getNumberservice, country, maxPrice?ACCESS_NUMBER:48151623:15550123456
getStatusidSTATUS_WAIT_CODE · STATUS_WAIT_RETRY:code · STATUS_OK:code · STATUS_CANCEL
setStatusid, statusACCESS_RETRY_GET · ACCESS_ACTIVATION · ACCESS_CANCEL
getRentNumberservice, country, rent_time (4/24/72/168/720){"status":"success","phone":{"id":31,"endDate":"…","number":"447700900001"}}
getRentStatusid{"status":"success","quantity":"1","values":{"0":{"phoneFrom":"WhatsApp","text":"…"}}}
setRentStatusid, status (1 = finish, 2 = cancel){"status":"success"}
continueRentNumberid, 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/events

Tī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.