SMS.ir SMS.ir

زبان برنامه‌نویسی

یکی از زبان‌های زیر را انتخاب کنید. از این به بعد نمونه‌کدها فقط به همان زبان نمایش داده می‌شوند.

ابزار تبدیل زمان به Unix Time

سال، ماه و روز شمسی به‌همراه ساعت UTC را وارد کنید. خروجی برای پارامترهای fromDate و toDate در API قابل استفاده است.

همه مقادیر زمانی در API بر حسب UTC و به‌صورت Unix Time (ثانیه) هستند.

Unix Time
تبدیل معکوس
فهرست مستندات

مقدمه و قراردادها

در این بخش مفاهیم و قراردادهای کلی مربوط به استفاده از وب‌سرویس SMS.ir شرح داده می‌شود. پیش از فراخوانی هر متد، آشنایی با هدرها، کدهای HTTP و مدل پاسخ یکپارچه توصیه می‌شود.

HTTP Request Header

برای انجام تنظیمات ضروری یا شخصی‌سازی‌شده، از هدرهای مشخص‌شده در جدول زیر استفاده کنید.

کلیدمقدارعملکرد
ACCEPT
application/json یا application/xmlدریافت خروجی با فرمت Json یا Xml
X-API-KEY
کلید تعریف‌شده در پنلاحراز هویت
Content-Type
application/jsonالزامی برای درخواست‌های POST با بدنه JSON

HTTP Status Code

تمامی درخواست‌های ارسالی دارای HTTP Status Codeهای بازگشتی مطابق جدول زیر هستند:

کد وضعیتتوضیح
200عملیات موفقیت‌آمیز
400وقوع خطای منطقی
401وجود خطا در فرآیند احراز هویت
429تعداد درخواست غیرمجاز (Rate Limit)
500خطای غیرمنتظره سمت سرور

Unix Time

واحد مقادیر مربوط به زمان در سطح این سامانه به‌صورت Unix Time و بر حسب ساعت هماهنگ جهانی (UTC) لحاظ شده است.

مدل بازگشتی (Global Response)

تمامی درخواست‌های ارسالی دارای مدل بازگشتی یکپارچه با ساختار زیر می‌باشند:

Response Body
{ "status": 1, "message": "موفق", "data": [30004505000027, 10002166593818] }
مشخصهتوضیح
statusکد وضعیت عملیات (مطابق جدول کدهای وضعیت)
messageتوضیحات وضعیت درخواست
dataدیتای بازگشتی؛ نوع آن بسته به متد فراخوانی‌شده متفاوت است

Authorization · احراز هویت

به‌منظور هویت‌سنجی در هنگام استفاده از وب‌سرویس‌های SMS.ir، ملزم به ارسال کلید خصوصی در بخش هدر درخواست می‌باشید. کلیدهای خصوصی شما در پنل برنامه‌نویسان قابل مشاهده و مدیریت هستند.

Header Example
X-API-KEY: YOUR_API_KEY

محیط Sandbox

Sandbox محیطی برای تست یکپارچگی است. ساختار URL، هدرها و JSON دقیقاً مثل Production است، اما پیامک واقعی ارسال نمی‌شود. با این محیط می‌توانید فرمت پاسخ و خطا را ببینید، بدون کسر اعتبار و بدون دریافت SMS.

ساخت کلید Sandbox

  1. وارد پنل کاربری SMS.ir شوید.
  2. از منوی برنامه‌نویسان گزینه لیست کلیدهای API را باز کنید.
  3. روی ایجاد کلید جدید کلیک کنید.
  4. نوع کلید را روی Sandbox قرار دهید و کلید را ذخیره کنید.

کلید Sandbox با کلید Production فرق دارد. در آزمایشگاه API یک کلید Sandbox از پیش در هدر X-API-KEY قرار دارد تا بدون paste دستی تست کنید.

🧪

Sandbox چیست؟

همان Base URL و ساختار Production، با کلید API جدا. پاسخ شبیه‌سازی‌شده برمی‌گردد و SMS واقعی ارسال نمی‌شود.

📵

چرا پیامک نمی‌رسد؟

هیچ SMS ارسال نمی‌شود، گزارشی در پنل ثبت نمی‌شود و اعتبار کسر نمی‌شود.

📋

Verify در Sandbox

در Sandbox، متد Verify فقط با templateId = 123456 و متن قالب کد تایید شما: #Code# پاسخ می‌دهد.

قالب‌هایی که در پنل Production ساخته‌اید با کلید Sandbox کار نمی‌کنند و خطای «قالب یافت نشد» برمی‌گردند.

آدرس پایه API

Sandbox و Production از یک Base URL استفاده می‌کنند. تفاوت فقط در X-API-KEY است.

BASE https://api.sms.ir/v1

هدرهای درخواست

هدرمقدار در Sandboxتوضیح
X-API-KEY
کلید Sandboxدر آزمایشگاه API از پیش تنظیم شده
Accept
application/json
پیش‌فرض اکثر endpointها
Accept
text/plain
فقط برای POST /send/verify
Content-Type
application/json
برای POST/DELETE با بدنه JSON

پارامترهای Verify در Sandbox

پارامترنوعمقدار مجاز در Sandboxتوضیح
mobileStringهر شماره معتبرفقط برای ساختار درخواست؛ SMS ارسال نمی‌شود
templateIdInteger123456 فقطسایر شناسه‌ها خطای «قالب یافت نشد» می‌دهند
parametersArray[{ "name": "Code", "value": "..." }]name باید با متغیر قالب (#Code#) یکی باشد

نمونه درخواست Verify (Sandbox)

Request · POST /send/verify
POST https://api.sms.ir/v1/send/verify X-API-KEY: <SANDBOX_KEY> Accept: text/plain Content-Type: application/json { "mobile": "09190000000", "templateId": 123456, "parameters": [{ "name": "Code", "value": "12345" }] }

نمونه پاسخ

Response · 200 OK
{ "status": 1, "message": "موفق", "data": { "messageId": 839084438, "cost": 1.0 } }
برای تست زنده endpointها به آزمایشگاه API بروید. این بخش فقط مستندات است و درخواست HTTP از اینجا ارسال نمی‌شود.

آزمایشگاه API

اینجا می‌توانید endpointها را با کلید Sandbox به https://api.sms.ir/v1 بفرستید و پاسخ سرور را ببینید. preset انتخاب کنید، در صورت نیاز JSON را ویرایش کنید و ارسال بزنید.

Sandbox
پیامک واقعی ارسال نمی‌شود. این بخش فقط برای تست درخواست HTTP و دیدن پاسخ است: status code، JSON خطا، ساختار data و زمان پاسخ. اعتبار کسر نمی‌شود و گزارشی در پنل ثبت نمی‌شود.
پاسخ
بدنه · application/json
1
Query params
Headers
cURL را paste کنید. Method، URL، Header و Body در فرم بالا ست می‌شود.
در انتظار درخواست...
آماده

ارسال گروهی (Bulk)

این متد برای ارسال یک متن پیامک به گروهی از شماره موبایل‌ها مورد استفاده قرار می‌گیرد. با مقداردهی به پارامتر sendDateTime می‌توانید از قابلیت ارسال زمان‌بندی‌شده استفاده کنید.

  • حداکثر تعداد مجاز شماره‌های مقصد: 100
  • زمان معتبر برای ارسال زمان‌بندی‌شده، از یک ساعت آینده تا حداکثر 365 روز آینده است.
POST https://api.sms.ir/v1/send/bulk

پارامترهای بدنه درخواست

پارامترنوعوضعیتتوضیح
lineNumber
Longاجباریشماره خط ارسالی
messageText
Stringاجباریمتن پیام کوتاه
mobiles
Array[String]اجباریشماره موبایل‌ها
sendDateTime
UnixTimeاختیاریزمان ارسال پیامک در آینده (خالی = ارسال در لحظه)

نمونه کد یکپارچه

HttpClient + JsonContent.Create؛ هدر X-API-KEY را در DefaultRequestHeaders بگذار.

curl_setopt + CURLOPT_POSTFIELDS؛ آرایه mobiles را با json_encode بفرست.

fetch یا axios؛ headers['X-API-KEY'] و body: JSON.stringify(...).

requests.post؛ headers= و json=؛ کتابخانه خودش serialize می‌کند.

http.NewRequest + json.Marshal؛ req.Header.Set("X-API-KEY", ...).

فلگ -H "X-API-KEY: ..." و -d با JSON inline.

C# PHP Node.js Python Go cURL
using System.Net.Http.Json; var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, "https://api.sms.ir/v1/send/bulk"); request.Headers.Add("X-API-KEY", "YOUR_API_KEY"); var payload = new { lineNumber = 30004505000017, messageText = "متن پیام شما اینجا قرار می‌گیرد", mobiles = new[] { "09120000000" } }; request.Content = JsonContent.Create(payload); var response = await client.SendAsync(request); Console.WriteLine(await response.Content.ReadAsStringAsync());
<?php $curl = curl_init(); $payload = [ "lineNumber" => 30004505000017, "messageText" => "متن پیام شما اینجا قرار می‌گیرد", "mobiles" => ["09120000000"] ]; curl_setopt_array($curl, [ CURLOPT_URL => 'https://api.sms.ir/v1/send/bulk', CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode($payload), CURLOPT_HTTPHEADER => [ 'X-API-KEY: YOUR_API_KEY', 'Content-Type: application/json' ], ]); $response = curl_exec($curl); curl_close($curl); echo $response;
const axios = require('axios'); const payload = { lineNumber: 30004505000017, messageText: "متن پیام شما اینجا قرار می‌گیرد", mobiles: ["09120000000"] }; axios.post('https://api.sms.ir/v1/send/bulk', payload, { headers: { 'X-API-KEY': 'YOUR_API_KEY', 'Content-Type': 'application/json' } }).then(res => console.log(res.data));
import requests url = "https://api.sms.ir/v1/send/bulk" payload = { "lineNumber": 30004505000017, "messageText": "متن پیام شما اینجا قرار می‌گیرد", "mobiles": ["09120000000"] } headers = { "X-API-KEY": "YOUR_API_KEY" } response = requests.post(url, json=payload, headers=headers) print(response.json())
package main import ( "bytes" "encoding/json" "fmt" "net/http" ) func main() { url := "https://api.sms.ir/v1/send/bulk" payload := map[string]interface{}{ "lineNumber": 30004505000017, "messageText": "متن پیام شما اینجا قرار می‌گیرد", "mobiles": []string{"09120000000"}, } jsonData, _ := json.Marshal(payload) req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData)) req.Header.Set("X-API-KEY", "YOUR_API_KEY") req.Header.Set("Content-Type", "application/json") client := &http.Client{} resp, _ := client.Do(req) defer resp.Body.Close() }
curl -X POST "https://api.sms.ir/v1/send/bulk" \\ -H "X-API-KEY: YOUR_API_KEY" \\ -H "Content-Type: application/json" \\ -d '{ "lineNumber": 30004505000017, "messageText": "متن پیام شما اینجا قرار می‌گیرد", "mobiles": ["09120000000"] }'
Response Data Model
{ "status": 1, "message": "موفق", "data": { "packId": "2b99e63c-9bf8-4a21-9bfe-3f72dc1b46f1", "messageIds": [86522023, 86522024], "cost": 2.0 } }
در آرایه messageIds مقدار 0 یعنی شماره در لیست سیاه است؛ مقدار null یعنی شماره نامعتبر یا متن بیش از حد مجاز.

ارسال نظیر به نظیر (Like To Like)

این متد برای ارسال متن‌های متفاوت به شماره‌های مختلف استفاده می‌شود. تعداد موبایل‌ها و متن‌ها باید دقیقاً برابر باشند.

POST https://api.sms.ir/v1/send/likeToLike
پارامترنوعوضعیتتوضیح
lineNumber
Longاجباریشماره خط ارسالی
messageTexts
Array[String]اجباریمتن پیام‌ها
mobiles
Array[String]اجباریشماره موبایل‌ها
sendDateTime
UnixTimeاختیاریزمان ارسال
  • حداکثر تعداد مجاز شماره‌های مقصد: 100

دو آرایه messageTexts و mobiles باید هم‌اندازه باشند؛ index i به index i.

قبل از ارسال count($mobiles) === count($messageTexts) را چک کن.

هر دو فیلد array؛ طول‌شان با .length یکی باشد.

لیست‌ها را zip نکن مگر مطمئن باشی طول برابر است.

دو slice جدا؛ len(mobiles) == len(messageTexts) الزامی.

JSON شامل دو آرایه موازی؛ طول هر دو باید یکسان باشد.

C# PHP Node.js Python Go cURL
using System.Net.Http.Json; var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, "https://api.sms.ir/v1/send/likeToLike"); request.Headers.Add("X-API-KEY", "YOUR_API_KEY"); var payload = new { lineNumber = 30004505000017, messageTexts = new[] { "پیام اختصاصی یک", "پیام اختصاصی دو" }, mobiles = new[] { "09120000001", "09120000002" } }; request.Content = JsonContent.Create(payload); var response = await client.SendAsync(request);
<?php $curl = curl_init(); $payload = [ "lineNumber" => 30004505000017, "messageTexts" => ["پیام اختصاصی یک", "پیام اختصاصی دو"], "mobiles" => ["09120000001", "09120000002"] ]; curl_setopt_array($curl, [ CURLOPT_URL => 'https://api.sms.ir/v1/send/likeToLike', CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode($payload), CURLOPT_HTTPHEADER => [ 'X-API-KEY: YOUR_API_KEY', 'Content-Type: application/json' ], ]); $response = curl_exec($curl);
const axios = require('axios'); const payload = { lineNumber: 30004505000017, messageTexts: ["پیام اختصاصی یک", "پیام اختصاصی دو"], mobiles: ["09120000001", "09120000002"] }; axios.post('https://api.sms.ir/v1/send/likeToLike', payload, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }).then(res => console.log(res.data));
import requests url = "https://api.sms.ir/v1/send/likeToLike" payload = { "lineNumber": 30004505000017, "messageTexts": ["پیام اختصاصی یک", "پیام اختصاصی دو"], "mobiles": ["09120000001", "09120000002"] } headers = { "X-API-KEY": "YOUR_API_KEY" } response = requests.post(url, json=payload, headers=headers)
package main import ( "bytes" "encoding/json" "net/http" ) func main() { payload := map[string]interface{}{ "lineNumber": 30004505000017, "messageTexts": []string{"پیام اختصاصی یک", "پیام اختصاصی دو"}, "mobiles": []string{"09120000001", "09120000002"}, } jsonData, _ := json.Marshal(payload) req, _ := http.NewRequest("POST", "https://api.sms.ir/v1/send/likeToLike", bytes.NewBuffer(jsonData)) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} client.Do(req) }
curl -X POST "https://api.sms.ir/v1/send/likeToLike" \\ -H "X-API-KEY: YOUR_API_KEY" \\ -H "Content-Type: application/json" \\ -d '{ "lineNumber": 30004505000017, "messageTexts": ["پیام اختصاصی یک", "پیام اختصاصی دو"], "mobiles": ["09120000001", "09120000002"] }'

ارسال Verify (کد تأیید)

متد Verify برای ارسال OTP و پیامک‌های الگومند با اولویت بالا طراحی شده است. متن پیامک از قالب تأیید‌شده در پنل خوانده می‌شود؛ شما فقط شماره گیرنده، شناسه قالب و مقادیر متغیرها را در بدنه درخواست ارسال می‌کنید.

  • ارسال از خطوط خدماتی با عبور از بلک‌لیست مخابراتی
  • متن پیامک از قبل در پنل تعریف می‌شود و نیازی به ارسال متن کامل در API نیست
  • پاسخ این متد اغلب plain text است؛ هدر مناسب را در درخواست ست کنید

ساخت قالب در پنل

  1. وارد پنل کاربری SMS.ir شوید.
  2. از منوی برنامه‌نویسانقالب‌های ارسال سریع قالب جدید بسازید.
  3. متن قالب را بنویسید. هر بخش پویا را با نام انگلیسی بین دو علامت # مشخص کنید.
نمونه متن قالب

کد تأیید شما: #Code#

  1. پس از تأیید قالب، شناسه قالب را از لیست قالب‌ها بردارید و در API استفاده کنید.

نحوه جایگزینی متغیرها

در بدنه درخواست، آرایه‌ای از name/value ارسال می‌شود. نام هر آیتم باید دقیقاً مطابق نام متغیر در قالب باشد، بدون علامت #.

متغیر در قالب name در API نمونه value
#Code# Code 12345
برای این متد هدر Accept: text/plain توصیه می‌شود. نام پارامترها به حروف بزرگ و کوچک حساس است.

Endpoint

POST https://api.sms.ir/v1/send/verify

بدنه درخواست (Request Body)

پارامترنوعوضعیتتوضیح
mobile
Stringاجباریشماره موبایل گیرنده
templateId
Integerاجباریشناسه قالب (قالب‌ها در پنل تعریف می‌شوند)
parameters
Array[Parameter]اجباریآرایه‌ای از مدل Parameter برای جایگزینی

مدل Parameter

پارامترنوعوضعیتتوضیح
name
Stringاجبارینام متغیر در قالب، بدون # (مثلاً Code)
value
Stringاجباریمقدار جایگزین؛ حداکثر ۲۵ کاراکتر

ساختار JSON

{
  "mobile": "09190000000",
  "templateId": 123456,
  "parameters": [
    { "name": "Code", "value": "12345" }
  ]
}

نمونه کد

C# PHP Node.js Python Go cURL
using System.Net.Http.Json; var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, "https://api.sms.ir/v1/send/verify"); request.Headers.Add("X-API-KEY", "YOUR_API_KEY"); request.Headers.Add("Accept", "text/plain"); var payload = new { mobile = "09190000000", templateId = 123456, parameters = new[] { new { name = "Code", value = "12345" } } }; request.Content = JsonContent.Create(payload); var response = await client.SendAsync(request);
<?php $curl = curl_init(); $payload = [ "mobile" => "09190000000", "templateId" => 123456, "parameters" => [ ["name" => "Code", "value" => "12345"] ] ]; curl_setopt_array($curl, [ CURLOPT_URL => 'https://api.sms.ir/v1/send/verify', CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode($payload), CURLOPT_HTTPHEADER => ['X-API-KEY: YOUR_API_KEY', 'Content-Type: application/json', 'Accept: text/plain'], ]); $response = curl_exec($curl);
const axios = require('axios'); const payload = { mobile: "09190000000", templateId: 123456, parameters: [{ name: "Code", value: "12345" }] }; axios.post('https://api.sms.ir/v1/send/verify', payload, { headers: { 'X-API-KEY': 'YOUR_API_KEY', 'Accept': 'text/plain' } }).then(res => console.log(res.data));
import requests url = "https://api.sms.ir/v1/send/verify" payload = { "mobile": "09190000000", "templateId": 123456, "parameters": [{"name": "Code", "value": "12345"}] } headers = { "X-API-KEY": "YOUR_API_KEY", "Accept": "text/plain" } response = requests.post(url, json=payload, headers=headers)
package main import ( "bytes" "encoding/json" "net/http" ) func main() { payload := map[string]interface{}{ "mobile": "09190000000", "templateId": 123456, "parameters": []map[string]string{ {"name": "Code", "value": "12345"}, }, } jsonData, _ := json.Marshal(payload) req, _ := http.NewRequest("POST", "https://api.sms.ir/v1/send/verify", bytes.NewBuffer(jsonData)) req.Header.Set("X-API-KEY", "YOUR_API_KEY") req.Header.Set("Accept", "text/plain") client := &http.Client{} client.Do(req) }
curl -X POST "https://api.sms.ir/v1/send/verify" \\ -H "X-API-KEY: YOUR_API_KEY" \\ -H "Accept: text/plain" \\ -H "Content-Type: application/json" \\ -d '{ "mobile": "09190000000", "templateId": 123456, "parameters": [{"name": "Code", "value": "12345"}] }'

پاسخ سرور

Response · 200 OK
{ "status": 1, "message": "موفق", "data": { "messageId": 89545112, "cost": 1.0 } }

ابزار ساخت JSON از قالب Verify

متن قالب را وارد کنید، مقادیر متغیرها را تنظیم کنید و JSON آماده را کپی یا در Sandbox تست کنید.

قالب در پنل → برنامه‌نویسان → قالب‌های ارسال سریع ساخته می‌شود. متغیرها در متن قالب با فرمت #Name# تعریف می‌شوند؛ در JSON فیلد name همان نام بدون # است.

قالب Sandbox مخصوص تست API است و از قبل روی سرور تنظیم شده: templateId = 123456 با متن کد تأیید شما: #Code#.

قالب‌های پنل Production در Sandbox پشتیبانی نمی‌شوند. پیامک واقعی ارسال نمی‌شود و اعتباری کسر نمی‌شود.

پارامترها · مقادیر متغیرها
متن قالب را وارد کنید؛ متغیرهای #Name# اینجا ظاهر می‌شوند.
پیش‌نمایش پیامک
...
خروجی JSON
{}

ارسال از طریق URL

این متد برای ارسال پیامک از طریق URL مورد استفاده قرار می‌گیرد. کافی است پارامترهای مورد نیاز را در قالب Query Params در آدرس مشخص‌شده قرار دهید. متد قابل استفاده: GET و POST.

GET https://api.sms.ir/v1/send
پارامترنوعوضعیتتوضیح
username
Stringاجبارینام کاربری
password
Stringاجباریکلید خصوصی (از پنل برنامه‌نویسان)
line
Longاجباریشماره خط
mobile
Stringاجباریشماره موبایل
text
Stringاجباریمتن پیامک
Request URL
https://api.sms.ir/v1/send?username=MY_USER&password=MY_APIKEY&line=3000&mobile=0912&text="TEXT"

حذف ارسال زمان‌بندی‌شده

حداکثر تا 3 دقیقه مانده به زمان ارسال، مجاز به لغو آن می‌باشید.
DELETE https://api.sms.ir/v1/send/scheduled/{packId}
پارامترنوعوضعیتتوضیح
packId
Guidاجباریشناسه مجموعه ارسال (در URL)
Response Body
{ "status": 1, "message": "موفق", "data": { "returnedCreditCount": 10.0, "smsCount": 5 } }

گزارش‌های ارسال پیامک

با متدهای این بخش می‌توانید وضعیت ارسال، دلیوری و آرشیو پیامک‌های ارسالی را پیگیری کنید.

گزارش پیامک · دریافت وضعیت

با شناسه یکتای پیامک (messageId) وضعیت دلیوری (Delivery) آن قابل دریافت است.

GET https://api.sms.ir/v1/send/{messageId}

گزارش مجموعه ارسال‌های روز

اطلاعات کلی مجموعه ارسال‌های روز جاری را دریافت کنید.

GET https://api.sms.ir/v1/send/pack
پارامترنوعوضعیتتوضیح
PageSize
Integerاختیاریتعداد آیتم در صفحه (پیش‌فرض: 100)
PageNumber
Integerاختیاریشماره صفحه (پیش‌فرض: 1)

گزارش مجموعه ارسال (جزئیات Pack)

با شناسه مجموعه ارسال (packId)، گزارش پیامک‌های ارسالی آن درخواست به‌همراه وضعیت دلیوری هرکدام را دریافت کنید.

GET https://api.sms.ir/v1/send/pack/{packId}

گزارش ارسال‌های روز (Live)

گزارشی از ارسال‌های انجام‌شده در روز جاری قابل دریافت است.

GET https://api.sms.ir/v1/send/live
پارامترنوعوضعیتتوضیح
pageSize
Integerاختیاریتعداد آیتم در صفحه (حداکثر و پیش‌فرض: 100)
pageNumber
Integerاختیاریشماره صفحه (پیش‌فرض: 1)
mobile
Stringاختیاریفیلتر بر اساس شماره موبایل
sortByNewest
Booleanاختیاریمرتب‌سازی نزولی بر اساس تاریخ (پیش‌فرض: false)

گزارش ارسال‌های آرشیو شده

گزارشی از ارسال‌های انجام‌شده در گذشته (تا انتهای روز قبل) را دریافت کنید.

GET https://api.sms.ir/v1/send/archive
پارامترنوعوضعیتتوضیح
fromDate
Integer (UnixTime)اختیاریاز تاریخ
toDate
Integer (UnixTime)اختیاریتا تاریخ
pageSize
Integerاختیاریتعداد آیتم در صفحه
pageNumber
Integerاختیاریشماره صفحه
mobile
Stringاختیاریفیلتر بر اساس شماره موبایل
sortByNewest
Booleanاختیاریمرتب‌سازی نزولی بر اساس تاریخ (پیش‌فرض: false)

گزارش‌های دریافت پیامک

متدهای این بخش برای دریافت پیامک‌های وارده به خطوط اختصاصی شما استفاده می‌شوند.

گزارش تازه‌ترین پیامک‌های دریافتی

تازه‌ترین پیامک‌های دریافتی را مشاهده کنید. هر پیامک دریافتی تنها یک‌بار توسط این متد قابل دسترسی است و پس از خوانده شدن، دیگر برنمی‌گردد.

GET https://api.sms.ir/v1/receive/latest
پارامترنوعوضعیتتوضیح
count
Integerاختیاریتعداد درخواستی (حداکثر و پیش‌فرض: 100)

گزارش پیامک‌های دریافتی روز

گزارش پیامک‌های دریافتی روز جاری (خوانده‌شده و نشده). در آغاز ساعات روز، گزارش پیام‌های دریافتی روز گذشته نیز با همین متد قابل دریافت است.

GET https://api.sms.ir/v1/receive/live
پارامترنوعوضعیتتوضیح
pageSize
Integerاختیاریتعداد آیتم در صفحه (حداکثر: 100)
pageNumber
Integerاختیاریشماره صفحه
sortByNewest
Booleanاختیاریمرتب‌سازی بر اساس تاریخ (پیش‌فرض: false)
mobile
Stringاختیاریفیلتر بر اساس شماره فرستنده

گزارش پیامک‌های دریافتی آرشیو شده

گزارشی از پیامک‌های دریافتی در گذشته (تا انتهای روز قبل).

GET https://api.sms.ir/v1/receive/archive
پارامترنوعوضعیتتوضیح
fromDate
Integer (UnixTime)اختیاریاز تاریخ
toDate
Integer (UnixTime)اختیاریتا تاریخ
pageSize
Integerاختیاریتعداد آیتم در صفحه
pageNumber
Integerاختیاریشماره صفحه
mobile
Stringاختیاریفیلتر بر اساس شماره فرستنده

تنظیمات (اعتبار و خطوط)

دریافت مقدار اعتبار فعلی

برای مشاهده مقدار اعتبار فعلی پنل از متد زیر استفاده کنید.

GET https://api.sms.ir/v1/credit
Response Body
{ "status": 1, "message": "موفق", "data": 165.3 }

دریافت لیست خطوط

با این متد، لیست خطوط آماده استفاده برای ارسال قابل مشاهده است.

GET https://api.sms.ir/v1/line
Response Body
{ "status": 1, "message": "موفق", "data": [10002155613464, 30004505000017] }

کدهای وضعیت و خطا

فیلد status در پاسخ API معنای عملیات را مشخص می‌کند. کد 1 به معنای موفقیت است؛ سایر کدها خطا یا هشدار را نشان می‌دهند.

کدهای وضعیت سیستم

کدتوضیحکدتوضیح
1عملیات با موفقیت انجام شد106تعداد متن‌ها بیش از حد مجاز (100)
0مشکلی در سامانه رخ داده؛ با پشتیبانی تماس بگیرید107لیست موبایل‌ها خالی است
10کلید وب‌سرویس نامعتبر است108لیست متن‌ها خالی است
11کلید وب‌سرویس غیرفعال است109زمان ارسال نامعتبر است
12کلید محدود به IPهای تعریف‌شده است110تعداد موبایل‌ها و متن‌ها برابر نیستند
13حساب کاربری غیرفعال است111با این شناسه ارسالی ثبت نشده است
14حساب کاربری در حالت تعلیق است112رکوردی برای حذف یافت نشد
20تعداد درخواست بیش از حد مجاز113قالب یافت نشد
101شماره خط نامعتبر است114طول مقدار پارامتر بیش از 25 کاراکتر است
102اعتبار کافی نیست115شماره موبایل در لیست سیاه سامانه است
103درخواست دارای متن(های) خالی است116نام پارامتر نمی‌تواند خالی باشد
104درخواست دارای موبایل(های) نادرست است117متن ارسال‌شده مورد تأیید نیست
105تعداد موبایل‌ها بیش از 100 است118تعداد پیام‌ها بیش از حد مجاز است
119برای قالب شخصی‌سازی‌شده پلن را ارتقا دهید
123خط ارسال‌کننده نیاز به فعال‌سازی دارد

کدهای وضعیت دلیوری (DeliveryState)

در گزارش‌های ارسال، فیلد deliveryState وضعیت رسیدن پیامک به گوشی را نشان می‌دهد:

کدتوضیحکدتوضیح
1رسیده به گوشی5رسیده به مخابرات
2نرسیده به گوشی6خطا
3پردازش در مخابرات7لیست سیاه
4نرسیده به مخابرات

تنظیمات امنیتی و لیست سفید (IP Whitelisting)

اگر در سرویس خود نیاز به محدودیت دسترسی (IP Restriction) دارید، برای جلوگیری از مسدود شدن درخواست‌ها هنگام Failover، هر دو IP زیر را در فایروال سرور خود مجاز (Whitelist) کنید:

Server IPs
# IP سرور اصلی: 185.211.56.44 # IP سرور پشتیبان (Backup): 78.158.166.99