وثائق واجهة Auth

واجهة المصادقة — تحقق من المستخدمين فوراً

مجموعة أدوات تحقق كاملة: إرسال OTP عبر SMS/واتساب والتحقق من الرموز والتحقق من صيغة الرقم — كل ذلك عبر واجهة REST API واحدة.

✦ No credit card required · Free plan available · Setup in 5 minutes

توجيه التحقق متعدد القنوات

أرسل رموز OTP مع آلية تجاوز ذكية. يجرب واتساب أولاً لمعدلات تحويل أعلى ثم ينتقل تلقائياً إلى SMS إذا لم يتم التسليم خلال 30 ثانية.

  • واتساب أولاً مع احتياطي SMS
  • تحليلات التسليم في الوقت الفعلي
  • فحص تنسيق أرقام الهاتف العالمية E.164
الجدول الزمني للتحويل من واتساب إلى SMS

المصادقة

تتطلب جميع طلبات API مفتاح API السري في رأس X-API-Key. يمكنك إنشاء المفاتيح من لوحة تحكم المطور.

X-API-Key: sm_live_your_api_key_here

عنوان URL الأساسي

أرسل جميع طلبات API إلى العنوان التالي:

https://api.startmessaging.com
نقاط النهاية

إمكانيات واجهة برمجة التطبيقات

  • POST /otp/send

    إنشاء وإرسال رمز مرور لمرة واحدة إلى رقم هاتف. تخصيص قوالب الرسائل بسهولة.

  • POST /otp/verify

    التحقق من الرمز الذي أدخله المستخدم. تحقق بسيط باستدعاء واحد يتحقق من انتهاء صلاحية الطلب.

  • GET /messages/:id

    الحصول على حالة تسليم رسالة SMS أو واتساب في الوقت الفعلي.

  • منع الاحتيال

    فرض حدود المعدل وفحص مخاطر شركات الاتصالات وقواعد الأجهزة للحد من التسجيلات المزيفة.

الخطوة 1: إرسال OTP

إنشاء وإرسال رمز OTP

curl -X POST https://api.startmessaging.com/otp/send \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sm_live_your_api_key_here" \
  -d '{
    "phoneNumber": "+919876543210",
    "templateId": "YOUR_TEMPLATE_ID",
    "variables": {
      "otp": "123456",
      "appName": "YourApp"
    }
  }'
const response = await fetch("https://api.startmessaging.com/otp/send", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-API-Key": "sm_live_your_api_key_here",
  },
  body: JSON.stringify({
    phoneNumber: "+919876543210",
    templateId: "YOUR_TEMPLATE_ID",
    variables: {
      otp: "123456",
      appName: "YourApp",
    },
  }),
});

const data = await response.json();
console.log(data);
import requests

response = requests.post(
    "https://api.startmessaging.com/otp/send",
    headers={
        "Content-Type": "application/json",
        "X-API-Key": "sm_live_your_api_key_here",
    },
    json={
        "phoneNumber": "+919876543210",
        "templateId": "YOUR_TEMPLATE_ID",
        "variables": {
            "otp": "123456",
            "appName": "YourApp"
        },
    },
)

data = response.json()
print(data)
$ch = curl_init("https://api.startmessaging.com/otp/send");

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "X-API-Key: sm_live_your_api_key_here",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "phoneNumber" => "+919876543210",
        "templateId" => "YOUR_TEMPLATE_ID",
        "variables" => [
            "otp" => "123456",
            "appName" => "YourApp"
        ]
    ]),
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
import java.net.http.*;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

String body = """
    {
      "phoneNumber": "+919876543210",
      "templateId": "YOUR_TEMPLATE_ID",
      "variables": {
        "otp": "123456",
        "appName": "YourApp"
      }
    }
    """;

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.startmessaging.com/otp/send"))
    .header("Content-Type", "application/json")
    .header("X-API-Key", "sm_live_your_api_key_here")
    .POST(HttpRequest.BodyPublishers.ofString(body))
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
package main

import (
  "bytes"
  "encoding/json"
  "fmt"
  "net/http"
  "io"
)

func main() {
  payload, _ := json.Marshal(map[string]interface{}{
    "phoneNumber": "+919876543210",
    "templateId":  "YOUR_TEMPLATE_ID",
    "variables": map[string]string{
      "otp":     "123456",
      "appName": "YourApp",
    },
  })

  req, _ := http.NewRequest("POST", "https://api.startmessaging.com/otp/send", bytes.NewBuffer(payload))
  req.Header.Set("Content-Type", "application/json")
  req.Header.Set("X-API-Key", "sm_live_your_api_key_here")

  resp, _ := http.DefaultClient.Do(req)
  defer resp.Body.Close()

  body, _ := io.ReadAll(resp.Body)
  fmt.Println(string(body))
}
الخطوة 2: التحقق من OTP

تأكيد رموز المستخدم فوراً

curl -X POST https://api.startmessaging.com/otp/verify \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sm_live_your_api_key_here" \
  -d '{
    "requestId": "req_abc123",
    "otpCode": "123456"
  }'
const response = await fetch("https://api.startmessaging.com/otp/verify", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-API-Key": "sm_live_your_api_key_here",
  },
  body: JSON.stringify({
    requestId: "req_abc123",
    otpCode: "123456",
  }),
});

const data = await response.json();
console.log(data);
import requests

response = requests.post(
    "https://api.startmessaging.com/otp/verify",
    headers={
        "Content-Type": "application/json",
        "X-API-Key": "sm_live_your_api_key_here",
    },
    json={
        "requestId": "req_abc123",
        "otpCode": "123456"
    },
)

data = response.json()
print(data)
$ch = curl_init("https://api.startmessaging.com/otp/verify");

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "X-API-Key: sm_live_your_api_key_here",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "requestId" => "req_abc123",
        "otpCode" => "123456"
    ]),
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
import java.net.http.*;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

String body = """
    {
      "requestId": "req_abc123",
      "otpCode": "123456"
    }
    """;

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.startmessaging.com/otp/verify"))
    .header("Content-Type", "application/json")
    .header("X-API-Key", "sm_live_your_api_key_here")
    .POST(HttpRequest.BodyPublishers.ofString(body))
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
package main

import (
  "bytes"
  "encoding/json"
  "fmt"
  "net/http"
  "io"
)

func main() {
  payload, _ := json.Marshal(map[string]interface{}{
    "requestId": "req_abc123",
    "otpCode":   "123456",
  })

  req, _ := http.NewRequest("POST", "https://api.startmessaging.com/otp/verify", bytes.NewBuffer(payload))
  req.Header.Set("Content-Type", "application/json")
  req.Header.Set("X-API-Key", "sm_live_your_api_key_here")

  resp, _ := http.DefaultClient.Do(req)
  defer resp.Body.Close()

  body, _ := io.ReadAll(resp.Body)
  fmt.Println(string(body))
}

تنسيقات الاستجابة

يُرجع استجابة إرسال OTP حالة التأكيد ومعرفات فريدة:

{
  "success": true,
  "statusCode": 201,
  "requestId": "req_abc123",
  "timestamp": "2026-02-15T10:30:00.000Z",
  "data": {
    "otpRequestId": "uuid-of-otp-request",
    "messageId": "uuid-of-message",
    "status": "queued"
  }
}

يُرجع استجابة التحقق قيمة تأكيد منطقية:

{
  "success": true,
  "statusCode": 200,
  "requestId": "req_xyz789",
  "timestamp": "2026-02-15T10:31:00.000Z",
  "data": {
    "verified": true
  }
}
الأسئلة الشائعة

واجهة Auth — الأسئلة الشائعة

ما هي طرق التحقق التي تدعمها واجهة Auth؟

تدعم واجهة Auth: 1) التحقق من OTP عبر SMS، 2) التحقق من OTP عبر واتساب، 3) واتساب أولاً مع احتياطي SMS، 4) التحقق من تنسيق رقم الهاتف، و5) فحص شركة الاتصالات/إمكانية الوصول. جميع الطرق متاحة عبر واجهة API موحدة واحدة.

واجهة برمجة تطبيقات واتساب

أضف التحقق من المستخدم إلى تطبيقك

خطة مجانية. مفتاح API خلال 30 ثانية.