S M S A F Z A R
تلفن تماس

031-34369080

آدرس ایمیل

Info@SMSAfzar.com

آدرس

اصفهان، خیابان 5 آذر، مجتمع آذر

تلفن تماس
031-34369080
آدرس ایمیل
Info@SMSAfzar.com
آدرس
اصفهان، خیابان 5 آذر، مجتمع آذر

وب سرویس ارسال و دریافت پیامک

ارسال پیام انبوه
نام متد : messages/send/bulk
از این متد جهت ارسال چندین پیام به شماره های گیرنده استفاده می شود.
حالت های قابل ارسال با استفاده از این متد عبارتند از :
1 ارسال پیام با متن یکسان با شماره فرستنده یکسان به شماره گیرندگان متفاوت
2 ارسال پیام با متن یکسان با شماره فرستنده های متفاوت به شماره گیرندگان متفاوت
3 ارسال پیام با متن یکسان با شماره فرستنده های متفاوت به یک شماره گیرنده
4 ارسال پیام با متن های متفاوت با شماره فرستنده یکسان به شماره گیرندگان متفاوت
5 ارسال پیام با متن های متفاوت با شماره فرستنده های متفاوت به شماره گیرندگان متفاوت
6 ارسال پیام با متن های متفاوت با شماره فرستنده های متفاوت به یک شماره گیرنده
6 ارسال پیام با متن های متفاوت با شماره فرستنده یکسان به یک شماره گیرنده
آدرس فراخوانی متد : https://api.smsafzar.ir/messages/send/bulk
روش فراخوانی متد با Http : POST
پارامترهای ورودی :
senderNumbers آرایه ای از شماره های فرستنده
recipientNumbers آرایه ای از شماره های گیرنده
contents آرایه ای از متن پیام ها
sendTimestamp این پارامتر اختیاری می باشد و جهت تعیین تاریخ و زمان ارسال پیام مورد استفاده قرار می گیرد. مقدار این پارامتر می بایست بر اساس Unix Time (تعداد ثانیه از 00:00:00 01-01-1970 UTC) ارائه گردد و مقدار تاریخ و زمان ارسالی می بایست بزرگتر از تاریخ و زمان جاری سیستم باشد. جهت استعلام وضعیت ارسال پیام زمان بندی شده از متد messages/status (گزارش وضعیت پیام های ارسالی بر اساس شناسه یکتای مجموعه پیام های ارسالی (batchId)) اسنفاده نمایید.
مقدار هر عنصر از پارامتر senderNumbers (آرایه ای از شماره های فرستنده) می تواند به یکی از صورت های زیر باشد :

1000xxxx
00981000xxxx
+981000xxxx
981000xxxx

مقدار هر عنصر از پارامت recipientNumbers (آرایه ای از شماره های گیرنده) می تواند به یکی از صورت های زیر باشد :

09xxxxxxxxx
9xxxxxxxxx
00989xxxxxxxxx
+989xxxxxxxxx
989xxxxxxxxx

هر عنصر از پارامتر contents (آرایه ای از متن پیام ها) می بایست حاوی مقدار باشد و ارسال مقادیری که تنها شامل فاصله خالی (space) باشد معتبر نمی باشند. به عنوان مثال مقادیر زیر برای پارامتر contents (متن پیام) معتبر نمی باشند :
{
  "senderNumbers": [
    "10001000",
    "20002000"
  ],
  "recipientNumbers": [
    "09100000000",
    "09300000000"
  ],
  "contents": [
    "",
    "    "
  ]
}
نحوه ی ارسال پارامترهای ورودی در قالب Json و به صورت ذیل می باشد :
{
  "senderNumbers": [
    "10001000",
    "20002000"
  ],
  "recipientNumbers": [
    "09100000000",
    "09300000000"
  ],
  "contents": [
    "Your message content 1",
    "Your message content 2"
  ]
}
{
  "senderNumbers": [
    "10001000",
    "20002000"
  ],
  "recipientNumbers": [
    "09100000000",
    "09300000000"
  ],
  "contents": [
    "Your message content 1",
    "Your message content 2"
  ],
  "sendTimestamp": 1770181488
}
خروجی :
کد های وضعیت که در پاسخ Http توسط این متد بازگشت داده می شوند عبارتند از :
400 درخواست ارسالی صحیح نمی باشد. در صورتی که مقادیر پارامترهای ارسالی معتبر نباشند و یا فراخوانی متد با خطای منطقی متناسب با سیستم و یا تنظیمات سیستم مواجه شود کد وضعیت پاسخ Http برابر با ۴۰۰ خواهد بود. مقدار پارامتر errorCode در خروجی، برابر با کد خطای مربوطه و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد. در صورتی که مقادیر پارامترهای ارسالی معتبر نباشند، پارامتر validationErrors، آرایه ای شامل نام پارامتر (field) و شرح خطای مربوط به نامعتبر بودن مقدار پارامتر (errorMessage) می باشد. ( لیست کدهای خطا )
نمونه های مختلف خروجی :
{
  "errorCode": 1001,
  "errorMessage": ".مقادیر پارامترهای ارسالی معتبر نمی باشند",
  "validationErrors": [
    {
      "field": "senderNumbers",
      "errorMessage": ".فیلد [ شماره های فرستنده ] را وارد نمایید"
    },
    {
      "field": "recipientNumbers",
      "errorMessage": ".فیلد [ شماره های گیرنده ] را وارد نمایید"
    },
    {
      "field": "contents",
      "errorMessage": ".فیلد [ متن پیام ها ] را وارد نمایید"
    }
  ]
}
{
  "errorCode": 1053,
  "errorMessage": ".شماره خط فرستنده در حساب کاربر تعریف نشده است"
}
در صورتی که ارسال پیام ها با خطای منطقی متناسب با سیستم و یا تنظیمات سیستم مواجه شود به طوری که هیچگونه پیام قابل ارسالی موجود نباشد، خروجی حاوی آرایه ای از اطلاعات پیام ها به همراه جزئیات خطای رخ داده برای هر پیام و صورت ذیل می باشد :
{
  "errorCode": 1003,
  "errorMessage": ".اطلاعات صحیحی جهت ارسال یافت نشد",
  "messages": [
    {
      "senderNumber": "10001000",
      "recipientNumber": "09100000000",
      "content": "Your message content 1",
      "errorCode": 1053,
      "errorMessage": ".شماره خط فرستنده در حساب کاربر تعریف نشده است"
    },
    {
      "senderNumber": "20002000",
      "recipientNumber": "09300000000",
      "content": "Your message content 2",
      "errorCode": 1048,
      "errorMessage": ".اپراتور: 2000 توسط مدیریت غیر فعال شده است"
    }
  ]
}
پارامترهای خروجی عبارتند از :
errorCode کد خطا
errorMessage شرح خطا
messages آرایه ای از پیام ها به همراه جزئیات خطای رخ داده برای هر پیام
پارامترهای هر عنصر از آرایه‌ی messages (پیام ها) عبارتند از :
senderNumber شماره فرستنده
recipientNumber شماره گیرنده
content متن پیام
errorCode کد خطا
errorMessage شرح خطا
401 خطای اهراز هویت رخ داده است. (Api Key یا توکن ارسالی معتبر نمی باشد.) (مقدار پارامتر errorCode در خروجی، برابر با عدد ۴۰۱ و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.)
نمونه خروجی :
{
  "errorCode": 401,
  "errorMessage": ".خطای احراز هویت رخ داده است"
}
403
مجوز دسترسی به متد برای حساب کاربری تعریف نشده است. (مقدار پارامتر errorCode در خروجی، برابر با عدد ۱۰۰۵ و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.)
آدرس IP جهت دسترسی به سرویس معتبر نمی باشد. (مقدار پارامتر errorCode در خروجی، برابر با عدد ۱۰۰۶ و مقدار پارامتر errorMessage علت عدم دسترسی کاربر به سرویس می باشد.)
نمونه خروجی :
{
  "errorCode": 1005,
  "errorMessage": ".مجوز دسترسی به متد برای حساب کاربری تعریف نشده است"
}
{
  "errorCode": 1006,
  "errorMessage": ".آدرس آی پی جهت دسترسی به سرویس معتبر نمی باشد"
}
500 خطایی در سرور رخ داده است. (مقدار پارامتر errorCode در خروجی، برابر با کد خطای مربوطه جهت ارائه به بخش پشتیبانی و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.)
نمونه خروجی :
{
  "errorCode": 1000011011,
  "errorMessage": "خطایی در سرور رخ داده است. | شناسه خطا : 1000011011"
}
200 اجرای موفقیت آمیز عملیات و خروجی حاوی یک شناسه یکتا برای مجموعه پیام های ارسالی (batchId) و یک آرایه از اطلاعات پیام های ارسالی به نام messages می باشد.
: batchId شناسه یکتای مجموعه پیام‌های ارسالی، تمامی پیام‌های موجود در این مجموعه دارای یک شناسه مشترک هستند. این شناسه امکان دریافت وضعیت تمامی پیام های مرتبط با این مجموعه را از طریق متد messages/status فراهم می نماید.
: messages آرایه ای شامل اطلاعات مربوط به هر یک از پیام های ارسالی می باشد. پارامترهای هر عنصر از این آرایه عبارتند از :
sentMessageId شناسه پیام
senderNumber شماره فرستنده
recipientNumber شماره گیرنده
content متن پیام
language زبان متن پیام
operator اپراتور شماره گیرنده
parts تعداد بخش متن پیام
cost هزینه ارسال پیام
messageStatus وضعیت پیام
errorCode در صورتی که پیام با خطای منطقی متناسب با سیستم و یا تنظیمات سیستم مواجه شود، کد خطای مربوطه توسط این پارامتر نمایش داده می شود.
errorMessage در صورتی که پیام با خطای منطقی متناسب با سیستم و یا تنظیمات سیستم مواجه شود، شرح خطای مربوطه توسط این پارامتر نمایش داده می شود.
پارامتر messageStatus (وضعیت پیام) حاوی یکی از مقادیر ذیل می باشد :
0 در انتظار ارسال
1 ارسال شده به درگاه اپراتور
2 رسیده به مخاطب
3 نرسیده به مخاطب
4 ارسال نشده
نمونه خروجی :
{
  "batchId": "ce6c8c5c-c13c-45f7-b013-0c0d8072c6e8",
  "messages": [
    {
      "sentMessageId": "b0302a94-73b3-4d4a-b3ef-460a79d087cb",
      "senderNumber": "10001000",
      "recipientNumber": "09100000000",
      "content": "Your message content",
      "language": "English",
      "operator": "Mci",
      "parts": "1",
      "cost": "1,800",
      "messageStatus": 1
    },
    {
      "senderNumber": "20002000",
      "recipientNumber": "09300000000",
      "content": "Your message content 2",
      "errorCode": 1048,
      "errorMessage": ".اپراتور: 2000 توسط مدیریت غیر فعال شده است"
    }
  ]
}
نمونه کدها :

Api Key
curl -X POST "https://api.smsafzar.ir/messages/send/bulk" \
-H "X-Api-Key: YourApiKey" \
-H "Cache-Control: no-cache" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
  "senderNumbers": ["10001000", "20002000"],
  "recipientNumbers": ["09100000000", "09300000000"],
  "contents": ["Your message content 1", "Your message content 2"]
}'
JWT Token
curl -X POST "https://api.smsafzar.ir/messages/send/bulk" \
-H "Authorization: Bearer YourToken" \
-H "Cache-Control: no-cache" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
  "senderNumbers": ["10001000", "20002000"],
  "recipientNumbers": ["09100000000", "09300000000"],
  "contents": ["Your message content 1", "Your message content 2"]
}'

Api Key
  using RestSharp;
  using System;
  using System.Threading.Tasks;
  
  var apiBaseUrl = "https://api.smsafzar.ir";
  var apiKey = "YourApiKey";
  
  // Options
  var options = new RestClientOptions(apiBaseUrl);
  
  // Client
  var client = new RestClient(options);
  
  // Request
  
  var messagesJson = new
  {
  senderNumbers = new string[] { "10001000", "20002000" },
  recipientNumbers = new string[] { "09100000000", "09300000000" },
  contents = new string[] { "Your message content 1", "Your message content 2" }
  };
  
  var request = new RestRequest("messages/send/bulk");
  request.AddHeader("X-Api-Key", apiKey);
  request.AddHeader("Cache-Control", "no-cache");
  request.AddHeader("Accept", "application/json");
  request.AddHeader("Content-Type", "application/json");
  request.AddJsonBody(messagesJson);
  
  // Call
  var response = await client.PostAsync(request);
  
  // Response
  Console.WriteLine($"Response Status Code: {(int)response.StatusCode}");
  Console.WriteLine($"Response Content: {response.Content}");
JWT Token
  using RestSharp;
  using System;
  using System.Threading.Tasks;
  
  var apiBaseUrl = "https://api.smsafzar.ir";
  var jwtToken = "YourToken";
  
  // Options
  var options = new RestClientOptions(apiBaseUrl);
  
  // Client
  var client = new RestClient(options);
  
  // Request
  
  var messagesJson = new
  {
  senderNumbers = new string[] { "10001000", "20002000" },
  recipientNumbers = new string[] { "09100000000", "09300000000" },
  contents = new string[] { "Your message content 1", "Your message content 2" }
  };
  
  var request = new RestRequest("messages/send/bulk");
  request.AddHeader("Authorization", $"Bearer {jwtToken}");
  request.AddHeader("Cache-Control", "no-cache");
  request.AddHeader("Accept", "application/json");
  request.AddHeader("Content-Type", "application/json");
  request.AddJsonBody(messagesJson);
  
  // Call
  var response = await client.PostAsync(request);
  
  // Response
  Console.WriteLine($"Response Status Code: {(int)response.StatusCode}");
  Console.WriteLine($"Response Content: {response.Content}");

Api Key
  import java.net.URI;
  import java.net.http.HttpClient;
  import java.net.http.HttpRequest;
  import java.net.http.HttpResponse;
  import java.util.HashMap;
  import java.util.Map;
  import com.fasterxml.jackson.databind.ObjectMapper;
  
  try {
  String apiBaseUrl = "https://api.smsafzar.ir";
  String apiKey = "YourApiKey";
  
  Map<String, Object> messages = new HashMap<>();
  messages.put("senderNumbers", new String[]{"10001000", "20002000"});
  messages.put("recipientNumbers", new String[]{"09100000000", "09300000000"});
  messages.put("contents", new String[]{"Your message content 1", "Your message content 2"});
  
  ObjectMapper objectMapper = new ObjectMapper();
  String requestBody = objectMapper.writeValueAsString(messages);
  
  
  HttpClient client = HttpClient.newHttpClient();
  
  // Request
  HttpRequest request = HttpRequest.newBuilder()
  .uri(URI.create(apiBaseUrl + "/messages/send/bulk"))
  .header("X-Api-Key", apiKey)
  .header("Cache-Control", "no-cache")
  .header("Accept", "application/json")
  .header("Content-Type", "application/json")
  .POST(HttpRequest.BodyPublishers.ofString(requestBody))
  .build();
  
  // Call
  HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
  
  //Response
  int responseStatusCode = response.statusCode();
  String responseContent = response.body();
  
  System.out.println("Response Status Code: " + responseStatusCode);
  System.out.println("Response Message: " + responseContent);
  } catch (Exception e) {
  e.printStackTrace();
  }
JWT Token
  import java.net.URI;
  import java.net.http.HttpClient;
  import java.net.http.HttpRequest;
  import java.net.http.HttpResponse;
  import java.util.HashMap;
  import java.util.Map;
  import com.fasterxml.jackson.databind.ObjectMapper;
  
  try {
  String apiBaseUrl = "https://api.smsafzar.ir";
  String jwtToken = "YourToken";
  
  Map<String, Object> messages = new HashMap<>();
  messages.put("senderNumbers", new String[]{"10001000", "20002000"});
  messages.put("recipientNumbers", new String[]{"09100000000", "09300000000"});
  messages.put("contents", new String[]{"Your message content 1", "Your message content 2"});
  
  ObjectMapper objectMapper = new ObjectMapper();
  String requestBody = objectMapper.writeValueAsString(messages);
  
  
  HttpClient client = HttpClient.newHttpClient();
  
  // Request
  HttpRequest request = HttpRequest.newBuilder()
  .uri(URI.create(apiBaseUrl + "/messages/send/bulk"))
  .header("Authorization", "Bearer " + jwtToken)
  .header("Cache-Control", "no-cache")
  .header("Accept", "application/json")
  .header("Content-Type", "application/json")
  .POST(HttpRequest.BodyPublishers.ofString(requestBody))
  .build();
  
  // Call
  HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
  
  //Response
  int responseStatusCode = response.statusCode();
  String responseContent = response.body();
  
  System.out.println("Response Status Code: " + responseStatusCode);
  System.out.println("Response Message: " + responseContent);
  } catch (Exception e) {
  e.printStackTrace();
  }

Api Key
  import requests
  
  api_base_url = "https://api.smsafzar.ir"
  api_key = "YourApiKey"
  
  messages_json = {
  "senderNumbers": ["10001000", "20002000"],
  "recipientNumbers": ["09100000000", "09300000000"],
  "contents": ["Your message content 1", "Your message content 2"]
  }
  
  headers = {
  "X-Api-Key": api_key,
  "Cache-Control": "no-cache",
  "Accept": "application/json",
  "Content-Type": "application/json"
  }
  
  # Call
  response = requests.post(f"{api_base_url}/messages/send/bulk", json=messages_json, headers=headers)
  
  # Response
  print("Response Status Code:", response.status_code)
  print("Response Content:", response.json())
JWT Token
  import requests
  
  api_base_url = "https://api.smsafzar.ir"
  jwt_token = "YourToken"
  
  messages_json = {
  "senderNumbers": ["10001000", "20002000"],
  "recipientNumbers": ["09100000000", "09300000000"],
  "contents": ["Your message content 1", "Your message content 2"]
  }
  
  headers = {
  "Authorization": f"Bearer {jwt_token}",
  "Cache-Control": "no-cache",
  "Accept": "application/json",
  "Content-Type": "application/json"
  }
  
  # Call
  response = requests.post(f"{api_base_url}/messages/send/bulk", json=messages_json, headers=headers)
  
  # Response
  print("Response Status Code:", response.status_code)
  print("Response Content:", response.json())

Api Key
<?php
    $apiBaseUrl = "https://api.smsafzar.ir";
    $apiKey= "YourApiKey";
    
    $messagesJson = json_encode([
    'senderNumbers' => ['10001000', '20002000'],
    'recipientNumbers' => ['09100000000', '09300000000'],
    'contents' => ['Your message content 1', 'Your message content 2']
    ]);
    
    // Initialize CURL session
    $ch = curl_init();
    
    // Set CURL options
    curl_setopt($ch, CURLOPT_URL, "{$apiBaseUrl}/messages/send/bulk");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $messagesJson);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "X-Api-Key: $apiKey",
        "Cache-Control: no-cache",
        "Accept: application/json",
        "Content-Type: application/json"
    ]);
    
    // Call
    $response = curl_exec($ch);
    
    // Response
    if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
    } else {
    $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    echo "Response Status Code: " . $httpStatusCode . "\n";
    echo "Response Content: " . $response . "\n";
    }
    
    // Close the CURL session
    curl_close($ch);
    ?>
JWT Token
<?php
    $apiBaseUrl = "https://api.smsafzar.ir";
    $jwtToken = "YourToken";
    
    $messagesJson = json_encode([
    'senderNumbers' => ['10001000', '20002000'],
    'recipientNumbers' => ['09100000000', '09300000000'],
    'contents' => ['Your message content 1', 'Your message content 2']
    ]);
    
    // Initialize CURL session
    $ch = curl_init();
    
    // Set CURL options
    curl_setopt($ch, CURLOPT_URL, "{$apiBaseUrl}/messages/send/bulk");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $messagesJson);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer $jwtToken",
        "Cache-Control: no-cache",
        "Accept: application/json",
        "Content-Type: application/json"
    ]);
    
    // Call
    $response = curl_exec($ch);
    
    // Response
    if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
    } else {
    $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    echo "Response Status Code: " . $httpStatusCode . "\n";
    echo "Response Content: " . $response . "\n";
    }
    
    // Close the CURL session
    curl_close($ch);
    ?>

Api Key
    const axios = require('axios');
    
    let apiBaseUrl = 'https://api.smsafzar.ir';
    let apiKey = 'YourApiKey';
    
    const messagesJson = {
    senderNumbers: ['10001000', '20002000'],
    recipientNumbers: ['09100000000', '09300000000'],
    contents: ['Your message content 1', 'Your message content 2']
    };
    
    let headers = {
    'X-Api-Key': apiKey,
    'Cache-Control': 'no-cache',
    'Accept': 'application/json',
    'Content-Type': 'application/json'
    };
    
    // Request
    axios.post(`${apiBaseUrl}/messages/send/bulk`, messagesJson, { headers })
    .then(response => {
    // Response
    console.log('Response Status Code:', response.status);
    console.log('Response Content:', response.data);
    })
    .catch(error => {
    console.error('Error:', error.response ? error.response.data : error.message);
    });
    
JWT Token
    const axios = require('axios');
    
    let apiBaseUrl = 'https://api.smsafzar.ir';
    let jwtToken = 'YourToken';
    
    const messagesJson = {
    senderNumbers: ['10001000', '20002000'],
    recipientNumbers: ['09100000000', '09300000000'],
    contents: ['Your message content 1', 'Your message content 2']
    };
    
    let headers = {
    'Authorization': `Bearer ${jwtToken}`,
    'Cache-Control': 'no-cache',
    'Accept': 'application/json',
    'Content-Type': 'application/json'
    };
    
    // Request
    axios.post(`${apiBaseUrl}/messages/send/bulk`, messagesJson, { headers })
    .then(response => {
    // Response
    console.log('Response Status Code:', response.status);
    console.log('Response Content:', response.data);
    })
    .catch(error => {
    console.error('Error:', error.response ? error.response.data : error.message);
    });
    

Api Key
    let httpClient= inject(HttpClient);
    
    let apiBaseUrl = 'https://api.smsafzar.ir';
    let apiKey = 'YourApiKey';
    
    const messagesJson = {
    senderNumbers: ['10001000', '20002000'],
    recipientNumbers: ['09100000000', '09300000000'],
    contents: ['Your message content 1', 'Your message content 2']
    };
    
    let headers = new HttpHeaders({
    'X-Api-Key': apiKey,
    'Cache-Control': 'no-cache',
    'Accept': 'application/json',
    'Content-Type': 'application/json'
    });
    
    // Request
    this.http.post(`${apiBaseUrl}/messages/send/bulk`, messagesJson, { headers , observe: 'response' })
    .subscribe(response => {
    // Response
    console.log('Response Status Code:', response.status);
    console.log('Response Content:', response.body);
    }, error => {
    console.error('Error:', error);
    });
JWT Token
    let httpClient= inject(HttpClient);
    
    let apiBaseUrl = 'https://api.smsafzar.ir';
    let jwtToken = 'YourToken';
    
    const messagesJson = {
    senderNumbers: ['10001000', '20002000'],
    recipientNumbers: ['09100000000', '09300000000'],
    contents: ['Your message content 1', 'Your message content 2']
    };
    
    let headers = new HttpHeaders({
    'Authorization': `Bearer ${jwtToken}`,
    'Cache-Control': 'no-cache',
    'Accept': 'application/json',
    'Content-Type': 'application/json'
    });
    
    // Request
    this.http.post(`${apiBaseUrl}/messages/send/bulk`, messagesJson, { headers , observe: 'response' })
    .subscribe(response => {
    // Response
    console.log('Response Status Code:', response.status);
    console.log('Response Content:', response.body);
    }, error => {
    console.error('Error:', error);
    });

Api Key
    import React, { useState } from 'react';
    
    const [responseStatusCode, setResponseStatusCode] = useState(null);
    const [responseContent, setResponseContent] = useState('');
    
    const apiBaseUrl = 'https://api.smsafzar.ir';
    const apiKey = 'YourApiKey';
    
    const messagesJson = {
    senderNumbers: ['10001000', '20002000'],
    recipientNumbers: ['09100000000', '09300000000'],
    contents: ['Your message content 1', 'Your message content 2']
    };
    
    try {
    // Request
    const response = await fetch(`${apiBaseUrl}/messages/send/bulk`, {
    method: 'POST',
    headers: {
    'X-Api-Key': apiKey,
    'Cache-Control': 'no-cache',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    },
    body: JSON.stringify(messagesJson),
    });
    
    // Response
    const content = await response.json();
    setResponseStatusCode(response.status);
    setResponseContent(content);
    
    console.log('Response Status Code:', response.status);
    console.log('Response Content:', content);
    } catch (error) {
    console.error('Error:', error);
    }
JWT Token
    import React, { useState } from 'react';
    
    const [responseStatusCode, setResponseStatusCode] = useState(null);
    const [responseContent, setResponseContent] = useState('');
    
    const apiBaseUrl = 'https://api.smsafzar.ir';
    const jwtToken = 'YourToken';
    
    const messagesJson = {
    senderNumbers: ['10001000', '20002000'],
    recipientNumbers: ['09100000000', '09300000000'],
    contents: ['Your message content 1', 'Your message content 2']
    };
    
    try {
    // Request
    const response = await fetch(`${apiBaseUrl}/messages/send/bulk`, {
    method: 'POST',
    headers: {
    'Authorization': `Bearer ${jwtToken}`,
    'Cache-Control': 'no-cache',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    },
    body: JSON.stringify(messagesJson),
    });
    
    // Response
    const content = await response.json();
    setResponseStatusCode(response.status);
    setResponseContent(content);
    
    console.log('Response Status Code:', response.status);
    console.log('Response Content:', content);
    } catch (error) {
    console.error('Error:', error);
    }