SMS.ir SMS.ir

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

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

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

سال، ماه و روز شمسی را با ساعت ایران وارد کنید. خروجی Unix Time برای پارامترهای fromDate و toDate در API است (API همیشه UTC ذخیره می‌کند).

ساعت را به وقت ایران وارد کنید. مقدار Unix خروجی همان لحظه را برای API برمی‌گرداند (مبنای ذخیره‌سازی API همچنان UTC است).

Unix Time هنوز محاسبه نشده
تبدیل معکوس
عدد Unix Time را وارد کنید تا تاریخ و ساعت شمسی نمایش داده شود.
فهرست مستندات

شروع کار با API

برای فراخوانی هر متد کافی است Base URL و کلید API را داشته باشید. مسیر پیشنهادی: کلید را از پنل بگیرید ← هدر X-API-KEY را بفرستید ← یکی از متدهای ارسال را تست کنید.

آدرس پایه

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

احراز هویت

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

Header Example
X-API-KEY: YOUR_API_KEY

HTTP Request Header

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

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

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

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

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

HTTP Status Code

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

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

زمان (Unix Time)

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

محیط Sandbox

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

قبل از شروع تست
محیط تست

Sandbox چیست؟

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

فقط برای تست
هزینه

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

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

بدون کسر اعتبار
کد تأیید

Verify در Sandbox

فقط با قالب تستی Sandbox کار می‌کند. قالب‌های Production اینجا معتبر نیستند.

فقط قالب تست
مقادیر مجاز Verify در Sandbox

اگر template دیگری بفرستید، خطای «قالب یافت نشد» می‌گیرید.

templateId 123456 template کد تایید شما: #Code#

ساخت کلید Sandbox

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

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

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

آدرس پایه 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توضیح
mobile
String هر شماره معتبر فقط برای ساختار درخواست؛ SMS ارسال نمی‌شود
templateId
Integer
فقط این مقدار
123456
سایر شناسه‌ها خطای «قالب یافت نشد» می‌دهند
parameters
Array
نام متغیر
Code
نمونه JSON
[{"name":"Code","value":"12345"}]
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 و زمان پاسخ. اعتبار کسر نمی‌شود و گزارشی در پنل ثبت نمی‌شود.
Response
Body · 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اختیاریزمان ارسال پیامک در آینده (خالی = ارسال در لحظه)

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

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
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"] }'
Response Body
{ { "status": 1, "message": "موفق", "data": { "packId": "2b99e63c-9bf8-4a21-9bfe-3f72dc1b46f1", "messageIds": [86522023, 86522024], "cost": 2.0 } }
در آرایه messageIds مقدار 0 یعنی شماره در لیست سیاه است؛ مقدار null یعنی شماره نامعتبر یا متن بیش از حد مجاز.

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

برای OTP و پیامک الگومند: متن از قالب تأیید‌شده پنل می‌آید؛ در API فقط شماره، templateId و مقادیر متغیرها را می‌فرستید.

خط خدماتی · عبور از بلک‌لیست متن از قالب پنل پاسخ اغلب text/plain

از قالب تا درخواست

  1. در پنل، از برنامه‌نویسان وارد قالب‌های ارسال سریع شوید و قالب بسازید.
  2. متغیرها را با نام انگلیسی بین دو # بنویسید؛ مثلاً:
نمونه متن قالب

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

  1. بعد از تأیید، شناسه قالب را بردارید و در درخواست بفرستید.
  2. در JSON، همان نام را بدون # بگذارید:
#Code# name: Code value: 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

نمونه بدنه درخواست Verify. مقادیر را با قالب و شماره خود جایگزین کنید:

Request Body
{ { "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 پشتیبانی نمی‌شوند. پیامک واقعی ارسال نمی‌شود و اعتباری کسر نمی‌شود.

هر سه فرمت مجاز است 9123456789 09123456789 989123456789
حداقل یک متغیر بین دو # لازم است؛ مثلاً #Code#
پارامترها: مقادیر متغیرها
متن قالب را وارد کنید؛ متغیرهای #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=30004505000017&mobile=09120000000&text=TEXT
Response Body
{ { "status": 1, "message": "موفق", "data": { "messageId": 89545112, "cost": 1.0 } }

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

حداکثر تا 3 دقیقه مانده به زمان ارسال، مجاز به لغو آن می‌باشید.
DELETE https://api.sms.ir/v1/send/scheduled/{packId}
پارامترنوعوضعیتتوضیح
packId
Guidاجباریشناسه مجموعه ارسال (در URL)

نمونه کد

C# PHP Node.js Python Go cURL
using System.Net.Http; var client = new HttpClient(); client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.DeleteAsync( "https://api.sms.ir/v1/send/scheduled/2b99e63c-9bf8-4a21-9bfe-3f72dc1b46f1"); Console.WriteLine(await response.Content.ReadAsStringAsync());
$curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => 'https://api.sms.ir/v1/send/scheduled/2b99e63c-9bf8-4a21-9bfe-3f72dc1b46f1', CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'DELETE', CURLOPT_HTTPHEADER => ['X-API-KEY: YOUR_API_KEY'], ]); $response = curl_exec($curl); curl_close($curl); echo $response;
const axios = require('axios'); axios.delete('https://api.sms.ir/v1/send/scheduled/2b99e63c-9bf8-4a21-9bfe-3f72dc1b46f1', { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }).then(res => console.log(res.data));
import requests url = "https://api.sms.ir/v1/send/scheduled/2b99e63c-9bf8-4a21-9bfe-3f72dc1b46f1" headers = { "X-API-KEY": "YOUR_API_KEY" } response = requests.delete(url, headers=headers) print(response.json())
package main import ( "fmt" "io" "net/http" ) func main() { req, _ := http.NewRequest("DELETE", "https://api.sms.ir/v1/send/scheduled/2b99e63c-9bf8-4a21-9bfe-3f72dc1b46f1", nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(string(body)) }
curl -X DELETE "https://api.sms.ir/v1/send/scheduled/2b99e63c-9bf8-4a21-9bfe-3f72dc1b46f1" \\ -H "X-API-KEY: YOUR_API_KEY"
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

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

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

GET https://api.sms.ir/v1/line

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

فیلد 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
وضعیت زنده سرویس

می‌خواهید از پایداری سرویس مطمئن شوید؟

وضعیت لحظه‌ای API، OTP و سرشماره‌ها را در مانیتورینگ SMS.ir ببینید.

--:--:-- مشاهده وضعیت ↗
شروع سریع با SDK

دستور نصب را کپی کنید و شروع کنید

پکیج رسمی Node، Laravel، Python و .NET را با یک دستور نصب کنید و بعد در آزمایشگاه API تست بگیرید.

sms.ir · install
$
tip: help · install · verify · api-key · clear

منابع توسعه‌دهندگان

ریپازیتوری، صفحه پکیج‌ها و وضعیت سرویس

پکیج‌های رسمی

SDKهای آماده برای شروع سریع