SMS aktyvinimo API
Du būdai: su sms-activate protokolu suderinamas endpoint, kad esama programinė įranga pereitų pakeitus URL ir raktą, ir JSON REST API naujoms integracijoms. Abu naudoja tą patį API raktą iš jūsų skydelio.
Gaukite API raktą
Sukurkite paskyrą, atidarykite skydelį ir sugeneruokite raktą skiltyje API prieiga. Laikykite jį paslaptyje: bet kas, turintis raktą, gali leisti jūsų likutį.
RegistruotisĮprasta eiga
- Iškvieskite getNumber su paslauga ir šalimi.
- Naudokite numerį tikslinėje programėlėje.
- Kas kelias sekundes tikrinkite getStatus, kol gausite STATUS_OK.
- Iškvieskite setStatus su 6 užbaigti arba su 8 atšaukti, jei kodas neatėjo.
Su sms-activate suderinamas endpoint
Siųskite GET arba POST užklausas su parametrais api_key ir action. Atsakymai yra paprastas tekstas, lygiai kaip sms-activate.
https://smsrota.com/stubs/handler_api.php?api_key=KEY&action=getNumber&service=wa&country=187
Veiksmai
| Veiksmas | Parametrai | Atsakymas |
|---|---|---|
| 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 reikšmės
- 3
- Prašyti naujo kodo tuo pačiu numeriu
- 6
- Užbaigti aktyvinimą
- 8
- Atšaukti ir grąžinti pinigus (galima praėjus dviem minutėms po pirkimo)
JSON REST API
Siųskite raktą Authorization antraštėje kaip "Bearer KEY". Sumos yra eilutės JAV doleriais su keturiais skaitmenimis po kablelio.
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/eventsWebhook'ai
Nurodykite URL savo skydelio skiltyje API prieiga. Kiekvienam įvykiui siunčiame POST užklausą su JSON turiniu. Atsakykite bet kokia 2xx būsena per 10 sekundžių; kitaip bandysime dar kartą po 1, 5, 30, 120, 360 ir 720 minučių.
- activation.sms_received
- Gautas kodas jūsų pirktam numeriui.
- activation.cancelled
- Numeris atšauktas arba baigė galioti, o pinigai grąžinti į jūsų balansą.
- rental.sms_received
- Gauta SMS žinutė nuomojamu numeriu.
- rental.ended
- Nuoma baigėsi arba buvo atšaukta.
Turinio pavyzdys
{
"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"
}
}Parašo tikrinimas
Kiekviena užklausa turi antraštę X-Webhook-Signature, pvz., t=1730000000,v1=…, kur v1 yra šešioliktainis "t.body" HMAC-SHA256, apskaičiuotas jūsų pasirašymo raktu. Atmeskite užklausą, jei parašas nesutampa arba t senesnis nei 5 minutės.
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));
}Klaidos
- BAD_KEY
- API raktas neteisingas arba buvo pakeistas.
- NO_NUMBERS
- Šiai paslaugai ir šaliai šiuo metu nėra likučio.
- NO_BALANCE
- Jūsų likučio nepakanka šiam numeriui.
- EARLY_CANCEL_DENIED
- Atšaukti galima praėjus dviem minutėms po pirkimo.
- NO_ACTIVATION
- Aktyvinimo ID neegzistuoja arba nepriklauso jums.