v1REST · JSON

SNSOTP OTP API

Isang REST API para sa SMS verification. Mag-order ng numero para sa isa sa 182 serbisyo sa isa sa 154 bansa, basahin ang one-time code mula sa order, at makuha ang buong presyo kapag walang code na dumating sa loob ng 20 minuto.

Ang bawat endpoint ay tumatanggap ng mga parameter bilang query parameters (GET) o bilang form fields o JSON (POST). Ang mga sagot ay JSON; ang pera ay USD string na may dalawang decimal at ang mga oras ay ISO 8601 sa UTC.

Server

https://snsotp.com/api/v1

PagpapatotooBearer token

Ang iyong API key mula sa console, ipinadala bilang Authorization: Bearer sok_...

Pagpapatotoo

Gumawa ng key sa API page ng console. Nagsisimula ito sa sok_ at ipinapakita minsan, kaya itabi ito sa environment variable. Ang pagpalit ng key ay agad na titigil sa lumang key. Ang mga tawag sa /services, /countries at /prices ay gumagana nang walang key.

Header
Authorization: Bearer sok_your_key_here

Ang key ay maaari ding ipadala bilang key query parameter o form field, na makakatulong sa mga tool na hindi makapag-set ng headers.

Mabilisang pagsisimula

Mag-order ng numero, ibigay ito sa app, pagkatapos ay i-poll ang order hanggang sa dumating ang code. Ang parehong proseso sa apat na wika:

# 1. Order a number for whatsapp in US
curl -X POST https://snsotp.com/api/v1/orders \
  -H "Authorization: Bearer $SNSOTP_KEY" \
  -d service=whatsapp -d country=us

# 2. Read the code (poll every 3 to 5 seconds)
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \
  -H "Authorization: Bearer $SNSOTP_KEY"

GET/services

Bawat serbisyo kasama ang code at pinakamababang presyo · walang key

Ang bawat serbisyo na maaari mong i-order, kasama ang code nito (gamitin ito bilang service sa ibang tawag), category nito, at ang pinakamababang presyo sa mga bansa. Hindi kailangan ng key.

RequestcURL
curl https://snsotp.com/api/v1/services
Response200
{
  "services": [
    { "code": "whatsapp", "name": "WhatsApp", "category": "social", "from": "0.09" },
    { "code": "telegram", "name": "Telegram", "category": "social", "from": "0.03" }
  ]
}

GET/countries

Bawat bansa kasama ang code at dial code · walang key

Ang bawat bansa kasama ang code nito (ISO 3166 alpha-2 sa lower case, gamitin ito bilang country) at dial code nito. Hindi kailangan ng key.

RequestcURL
curl https://snsotp.com/api/v1/countries
Response200
{
  "countries": [
    { "code": "us", "name": "United States", "dial_code": "1" },
    { "code": "gb", "name": "United Kingdom", "dial_code": "44" }
  ]
}

GET/prices

Mga presyo para sa isang serbisyo, isang bansa o pareho · walang key

Ang presyo bawat order para sa isang serbisyo sa bawat bansa, isang bansa para sa bawat serbisyo, o isang pares. Magpadala ng kahit isang filter. Hindi kailangan ng key.

Parameters

  • servicestring

    Service code, halimbawa whatsapp

  • countrystring

    Country code, halimbawa us

RequestcURL
curl "https://snsotp.com/api/v1/prices?service=whatsapp&country=us"
Response200
{
  "prices": [
    { "service": "whatsapp", "country": "us", "price": "0.93" }
  ]
}

GET/balance

Ang iyong credit sa USD · kailangan ng key

Ang iyong credit sa USD.

RequestcURL
curl https://snsotp.com/api/v1/balance \
  -H "Authorization: Bearer $SNSOTP_KEY"
Response200
{
  "balance": "42.50",
  "currency": "USD"
}

POST/orders

Mag-order ng numero para sa isang serbisyo at isang bansa · kailangan ng key

Nag-o-order ng numero at sisingilin ang presyo nito. Ang sagot ay may numero sa buong anyo (phone) at walang dial code (number). Ang order ay mananatiling bukas sa loob ng 20 minuto; kung walang code sa panahong iyon, ang presyo ay babalik sa iyong credit nang kusa. Ang sagot ay status 201.

Parameters

  • servicestringkailangan

    Service code mula sa GET /services

  • countrystringkailangan

    Country code mula sa GET /countries

RequestcURL
curl -X POST https://snsotp.com/api/v1/orders \
  -H "Authorization: Bearer $SNSOTP_KEY" \
  -d service=whatsapp -d country=us
Response201
{
  "order": {
    "id": "OT-7K2M9QX4PB",
    "service": "whatsapp",
    "country": "us",
    "phone": "+13475550182",
    "number": "3475550182",
    "dial_code": "1",
    "price": "0.93",
    "status": "waiting",
    "code": null,
    "sms": null,
    "codes": [],
    "expires_at": "2026-11-03T12:20:00.000Z"
  },
  "window_minutes": 20
}

GET/orders/{id}

Status, code at SMS text ng isang order · kailangan ng key

Isang order kasama ang status nito, ang pinakabagong code, ang pinakabagong SMS text, at bawat code na natanggap hanggang ngayon. I-poll tuwing 3 hanggang 5 segundo habang ang status ay waiting.

Parameters

  • idpathkailangan

    Order id mula sa POST /orders

RequestcURL
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \
  -H "Authorization: Bearer $SNSOTP_KEY"
Response200
{
  "order": {
    "id": "OT-7K2M9QX4PB",
    "service": "whatsapp",
    "country": "us",
    "phone": "+13475550182",
    "number": "3475550182",
    "price": "0.93",
    "status": "received",
    "code": "284913",
    "sms": "Your WhatsApp code is 284913",
    "expires_at": "2026-11-03T12:20:00.000Z"
  }
}

GET/orders

Ang iyong mga bukas na order (o lahat gamit ang status=all) · kailangan ng key

Ang iyong mga bukas na order, pinakabago muna. Magdagdag ng status=all para sa mga kamakailang order sa bawat status.

Parameters

  • statusstring

    bukas (default) o lahat

  • limitnumber

    1 hanggang 100, default 50

RequestcURL
curl "https://snsotp.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer $SNSOTP_KEY"
Response200
{
  "orders": [
    { "id": "OT-7K2M9QX4PB", "service": "whatsapp", "status": "received", "code": "284913" }
  ]
}

POST/orders/{id}/resend

Isa pang code sa parehong numero · kailangan ng key

Humiling ng isa pang code sa parehong numero pagkatapos ng unang code, sa loob ng window, nang walang karagdagang bayad. Pagkatapos ay mag-trigger ng bagong SMS sa app; ang waiting_for_resend ay totoo hanggang sa dumating ito.

Parameters

  • idpathkailangan

    ID ng order

RequestcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/resend \
  -H "Authorization: Bearer $SNSOTP_KEY"
Response200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "received", "waiting_for_resend": true }
}

POST/orders/{id}/finish

Isara ang order pagkatapos gamitin ang code · kailangan ng key

Isasara ang isang order na tumanggap ng code kapag nagamit mo na ito. Ang pagtatapos ay opsyonal: ang mga bukas na order ay sasara nang kusa kapag natapos ang window.

Parameters

  • idpathkailangan

    ID ng order

RequestcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/finish \
  -H "Authorization: Bearer $SNSOTP_KEY"
Response200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "finished" }
}

POST/orders/{id}/cancel

Kanselahin bago makuha ang code, buong refund · kailangan ng key

Kanselahin ang isang order bago dumating ang code at ibalik ang buong presyo sa iyong credit agad. Pagkatapos ng code, ang cancel ay magbibigay ng has_code.

Parameters

  • idpathkailangan

    ID ng order

RequestcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/cancel \
  -H "Authorization: Bearer $SNSOTP_KEY"
Response200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "canceled", "refunded": "0.93" }
}

Katayuan ng order

mga status value
  • waitingAng numero ay handa na at wala pang SMS na dumating. Posible ang cancel.
  • receivedKahit isang code ay dumating. Ang code at sms ay naglalaman ng pinakabagong code.
  • finishedIsinara pagkatapos ng code, sa pamamagitan ng finish o kapag natapos ang window.
  • refundedWalang code na dumating sa loob ng 20 minuto. Ang buong presyo ay bumalik sa iyong credit.
  • canceledKanselado bago dumating ang code. Ang buong presyo ay bumalik sa iyong credit.

Mga error

Ang mga error ay gumagamit ng HTTP status at isang body na may stable code at readable message.

HTTP status at codes
  • 400missing_filter, bad_jsonNawawala ang isang kinakailangang value o hindi mabasa ang body.
  • 401no_key, bad_keyAng key ay nawawala, mali, o tinanggal.
  • 402no_balanceHindi sapat ang credit para sa order na ito. Magdagdag ng credit sa console.
  • 404unknown_service, unknown_country, not_sold, not_foundAng code o order ay hindi umiiral, o ang pares ay hindi ibinebenta.
  • 409too_many_open, has_code, not_ready, no_numbersAng action ay hindi akma sa order state, o walang libreng numero ngayon (walang sisingilin).
  • 429rate_limitedHigit sa 300 request sa isang minuto gamit ang isang key.
Laman ng error402
{
  "error": {
    "code": "no_balance",
    "message": "Not enough credit. Add credit in the console."
  }
}

Mga limitasyon sa rate

  • 300 request bawat minuto bawat key. Sa higit pa rito, ang API ay magbibigay ng 429 rate_limited para sa natitirang minuto.
  • Hanggang 20 bukas na order bawat account. Tapusin o kanselahin ang isa para magbukas ng isa pa.
  • Mag-poll ng order tuwing 3 hanggang 5 segundo; karaniwang dumarating ang mga code sa loob ng isang minuto.

Format ng SMS activation

Ang mga script na isinulat para sa karaniwang format na handler_api.php ay gumagana sa parehong API key: baguhin ang base address sa https://snsotp.com/stubs/handler_api.php at panatilihin ang mga aksyon. Parehong serbisyo at country code tulad ng sa REST API.

Mga Aksyon
  • getBalance

    ACCESS_BALANCE:42.50

  • getServicesList

    Listahan ng mga serbisyo sa JSON

  • getCountries

    Mapa ng mga bansa sa JSON

  • getPricesservice, country (opsyonal)

    JSON {country: {service: {cost, count}}}

  • getNumberservice, country

    ACCESS_NUMBER:<id>:<phone>

  • getStatusid

    STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<code>, STATUS_CANCEL

  • setStatusid, status 1 / 3 / 6 / 8

    ACCESS_READY, ACCESS_RETRY_GET, ACCESS_ACTIVATION, ACCESS_CANCEL

RequestcURL
curl "https://snsotp.com/stubs/handler_api.php\
?api_key=$SNSOTP_KEY&action=getNumber\
&service=telegram&country=gb"

ACCESS_NUMBER:OT-3QF8ZK2W7M:447700900182

Mga halaga ng setStatus: 1 handa, 3 ibang code, 6 tapos, 8 kanselahin na may buong refund.

Dokumentasyon ng OTP API: REST API para sa SMS Verification | SNSOTP