Orqaga API Dokumentatsiya v1.0
iSMS.uz API

iSMS.uz API orqali Android qurilmangiz yordamida SMS xabarlar yuborish, qabul qilish va boshqarishingiz mumkin. Barcha so'rovlar HTTPS orqali, POST yoki GET metodlari bilan amalga oshiriladi.

Base URL:
https://isms.uz/gateway

Barcha endpointlar ushbu URL ga qo'shilib chaqiriladi. Masalan: /services/send.php
Javob formati
200 OK application/json
{
  "success": true,
  "messages": [
    {
      "ID": "1",
      "number": "+998901234567",
      "message": "Sizning OTP: 123456",
      "deviceID": "1",
      "simSlot": "0",
      "status": "Pending",
      "type": "sms",
      "sentDate": "2024-04-14T10:30:00+05:00",
      "deliveredDate": null
    }
  ]
}

Autentifikatsiya

Barcha so'rovlarda key parametri sifatida API kalitingizni yuboring.

🔑
Sizning API kalitingiz
••••••••••••••••••••••••••••••••••••••••
API kalitni hech kimga bermang va ommaviy joyda (GitHub, Telegram) e'lon qilmang. Agar kalit sizib chiqqan bo'lsa, Paneldan yangi kalit yarating.

Bitta SMS yuborish

Bitta raqamga SMS xabar yuborish uchun ishlatiladi. OTP, bildirishnoma, tasdiqlash kodlari uchun ideal.

POST /services/send.php
ParametrTurHolatTavsif
numberstringMajburiySMS yuboriladigan telefon raqam. Masalan: +998901234567
messagestringMajburiySMS matni. Unicode belgilar ham qo'llab-quvvatlanadi.
keystringMajburiyAPI kalitingiz
devicesint|stringIxtiyoriyQurilma ID. 0 = belgilangan qurilma
scheduletimestampIxtiyoriyRejalashtirilgan yuborish vaqti (Unix timestamp)
typestringIxtiyoriysms (default) yoki mms
prioritizeboolIxtiyoriy1 = ustuvor yuborish
send-single.sh
curl -X POST "https://isms.uz/gateway/services/send.php" \
  -d "number=+998901234567" \
  -d "message=Sizning OTP kodingiz: 847291" \
  -d "key=YOUR_API_KEY" \
  -d "devices=1" \
  -d "prioritize=1"

Ommaviy SMS yuborish

Bir nechta raqamlarga bir vaqtda turli xabarlar yuborish. Marketing kampaniyalari va bildirishnomalar uchun.

POST /services/send.php
ParametrTurHolatTavsif
messagesJSONMajburiyJSON array: [{"number":"+998...","message":"..."}]
keystringMajburiyAPI kalitingiz
devicesJSONIxtiyoriyQurilmalar ID ro'yxati: [1,2,3]
optionintIxtiyoriy0=belgilangan, 1=barcha qurilma, 2=barcha SIM
useRandomDeviceboolIxtiyoriyTasodifiy qurilma tanlash
scheduletimestampIxtiyoriyRejalashtirilgan vaqt
send-bulk.sh
curl -X POST "https://isms.uz/gateway/services/send.php" \
  -d 'messages=[{"number":"+998901234567","message":"Salom Jasur!"},{"number":"+998991234567","message":"Salom Ali!"}]' \
  -d "key=YOUR_API_KEY" \
  -d "option=1"

Kontaktlar ro'yxatiga SMS

Panelda saqlangan kontaktlar guruhiga bir xabar yuborish.

POST /services/send.php
ParametrTurHolatTavsif
listIDintMajburiyKontaktlar ro'yxati ID (Paneldan topasiz)
messagestringMajburiyYuboriluvchi xabar matni
keystringMajburiyAPI kalitingiz
devicesJSONIxtiyoriyQurilmalar ID ro'yxati
optionintIxtiyoriy0, 1 yoki 2
send-to-list.sh
curl -X POST "https://isms.uz/gateway/services/send.php" \
  -d "listID=5" \
  -d "message=Yangi aksiya! -30% barcha mahsulotlarga!" \
  -d "key=YOUR_API_KEY" \
  -d "option=1"

SMS holati olish

Yuborilgan SMS ning joriy holatini tekshirish: Pending, Sent, Delivered yoki Failed.

POST /services/send.php
ParametrTurHolatTavsif
idintMajburiySMS ID (yuborishda qaytariladi)
keystringMajburiyAPI kalitingiz
get-status.sh
curl -X POST "https://isms.uz/gateway/services/send.php" \
  -d "id=1234" \
  -d "key=YOUR_API_KEY"

# SMS holatlari:
# Pending   — navbatda kutmoqda
# Sent      — qurilmadan yuborildi
# Delivered — qabul qilindi (tasdiqlanmagan)
# Failed    — yuborishda xato

Qurilmalar ro'yxati

Akkauntingizga ulangan barcha qurilmalar va ularning holatini olish.

POST /services/send.php
ParametrTurHolatTavsif
keystringMajburiyAPI kalitingiz
get-devices.sh
curl -X POST "https://isms.uz/gateway/services/send.php" \
  -d "key=YOUR_API_KEY"

# Javob:
{
  "success": true,
  "devices": [
    { "id": 1, "name": "Samsung A54", "battery": 87, "signal": 4, "active": true },
    { "id": 2, "name": "Redmi Note 12", "battery": 63, "signal": 5, "active": true }
  ]
}

Webhook sozlash

Qurilmangizga SMS kelganda yoki SMS holati o'zgarganda, iSMS.uz sizning serveringizga avtomatik POST so'rov yuboradi.

Webhook URL ni Panelda API → Webhook URL bo'limiga kiriting. Server HTTPS bo'lishi shart.
Webhook so'rov tarkibi
webhook-payload.json
// POST body (form-encoded)
messages = [
  {
    "ID": "1",
    "number": "+998901234567",
    "message": "Salom! Sizning buyurtmangiz tayyor.",
    "deviceID": "1",
    "simSlot": "0",
    "userID": "1",
    "status": "Received",
    "sentDate": "2024-04-14T10:30:00+05:00",
    "deliveredDate": "2024-04-14T10:30:02+05:00",
    "groupID": null
  }
]

// Header
HTTP_X_SG_SIGNATURE: "base64_encoded_hmac_sha256_signature"

Webhook — PHP misoli

Serveringizda quyidagi PHP faylni yarating va URL ini Panelga kiriting.

webhook.php
<?php
define("API_KEY", "YOUR_API_KEY");  // ← API kalitingiz

try {
    if (isset($_SERVER["HTTP_X_SG_SIGNATURE"])) {

        // ── Kiruvchi SMS ──
        if (isset($_POST["messages"])) {
            $hash = base64_encode(hash_hmac(
                'sha256',
                $_POST["messages"],
                API_KEY,
                true
            ));

            if ($hash === $_SERVER["HTTP_X_SG_SIGNATURE"]) {
                $messages = json_decode($_POST["messages"], true);

                foreach ($messages as $msg) {
                    /**
                     * $msg['ID']            — SMS ID
                     * $msg['number']        — Yuboruvchi raqam
                     * $msg['message']       — Xabar matni
                     * $msg['deviceID']      — Qurilma ID
                     * $msg['simSlot']       — SIM slot (0 yoki 1)
                     * $msg['status']        — Holat
                     * $msg['sentDate']      — Yuborilgan vaqt
                     * $msg['deliveredDate'] — Yetkazilgan vaqt
                     */

                    // Misol: OTP javobini qayta ishlash
                    if (strtolower($msg["message"]) === "hi") {
                        // Javob yuborish yoki boshqa amal bajarish
                    }
                }
            } else {
                throw new Exception("Signature mos kelmadi!");
            }
        }

        // ── USSD so'rovi ──
        if (isset($_POST["ussdRequest"])) {
            $ussd = json_decode($_POST["ussdRequest"]);
            $deviceID = $ussd->deviceID;
            $request  = $ussd->request;
            $response = $ussd->response;
            // USSD javobini qayta ishlash
        }

    } else {
        http_response_code(400);
        error_log("Signature topilmadi!");
    }
} catch (Exception $e) {
    http_response_code(401);
    error_log($e->getMessage());
}

PHP SDK — To'liq misol

PHP faylingizga quyidagi kodni qo'shing va darhol SMS yuborishni boshlang.

isms-sdk.php
<?php
define("SERVER",        "https://isms.uz/gateway");
define("API_KEY",       "YOUR_API_KEY");  // ← o'zgartiring
define("USE_SPECIFIED", 0);
define("USE_ALL_DEVICES",1);
define("USE_ALL_SIMS",  2);

/**
 * Bitta SMS yuborish
 * @param string $number     — Telefon raqam (+998...)
 * @param string $message    — SMS matni
 * @param int    $device     — Qurilma ID (0 = default)
 * @param int    $schedule   — Unix timestamp (null = hozir)
 * @param bool   $isMMS      — MMS yuborish?
 * @param string $attachments— MMS uchun rasm URL lari
 * @param bool   $prioritize — Ustuvor yuborish?
 */
function sendSingleMessage($number, $message, $device=0,
    $schedule=null, $isMMS=false, $attachments=null, $prioritize=false)
{
    $url = SERVER . "/services/send.php";
    $data = [
        'number'      => $number,
        'message'     => $message,
        'key'         => API_KEY,
        'devices'     => $device,
        'schedule'    => $schedule,
        'type'        => $isMMS ? "mms" : "sms",
        'attachments' => $attachments,
        'prioritize'  => $prioritize ? 1 : 0
    ];
    return sendRequest($url, $data)["messages"][0];
}

/**
 * Ommaviy SMS yuborish
 * @param array $messages        — [["number"=>"+998...", "message"=>"..."], ...]
 * @param int   $option          — USE_SPECIFIED | USE_ALL_DEVICES | USE_ALL_SIMS
 * @param array $devices         — Qurilmalar ID ro'yxati
 * @param int   $schedule        — Unix timestamp
 * @param bool  $useRandomDevice — Tasodifiy qurilma
 */
function sendMessages($messages, $option=USE_SPECIFIED,
    $devices=[], $schedule=null, $useRandomDevice=false)
{
    $url = SERVER . "/services/send.php";
    $data = [
        'messages'        => json_encode($messages),
        'key'             => API_KEY,
        'devices'         => json_encode($devices),
        'option'          => $option,
        'schedule'        => $schedule,
        'useRandomDevice' => $useRandomDevice
    ];
    return sendRequest($url, $data)["messages"];
}

// ── HTTP helper ──
function sendRequest($url, $data) {
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL            => $url,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => http_build_query($data),
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_TIMEOUT        => 30
    ]);
    $response = curl_exec($ch);
    if (curl_errno($ch)) throw new Exception(curl_error($ch));
    curl_close($ch);
    return json_decode($response, true);
}

Tezkor cURL misollar

Terminaldan to'g'ridan-to'g'ri sinab ko'rish uchun.

OTP SMS yuborish
otp.sh
OTP=$(shuf -i 100000-999999 -n 1)
curl -X POST "https://isms.uz/gateway/services/send.php" \
  -d "number=+998901234567" \
  -d "message=iSMS.uz: Tasdiqlash kodi: ${OTP}" \
  -d "key=YOUR_API_KEY" \
  -d "prioritize=1"
Ko'p raqamga bir xil xabar
broadcast.sh
curl -X POST "https://isms.uz/gateway/services/send.php" \
  -d 'messages=[
    {"number":"+998901234567","message":"Yangi aksiya! -30%"},
    {"number":"+998991234567","message":"Yangi aksiya! -30%"},
    {"number":"+998971234567","message":"Yangi aksiya! -30%"}
  ]' \
  -d "key=YOUR_API_KEY" \
  -d "option=2"
Savollaringiz bormi? Telegram orqali bog'laning: @isms.uz yoki +998 99 998 09 01