Sandbox چیست؟
همان Base URL و ساختار Production، با کلید API جداگانه. پاسخ شبیهسازیشده برمیگردد.
فقط برای تستمیتوانید مستندات را کامل ببینید یا زبان برنامهنویسیتان را انتخاب کنید و بر همان اساس ادامه دهید.
یکی از زبانهای زیر را انتخاب کنید. از این به بعد نمونهکدها فقط به همان زبان نمایش داده میشوند.
سال، ماه و روز شمسی را با ساعت ایران وارد کنید. خروجی Unix Time برای پارامترهای fromDate و toDate در API است (API همیشه UTC ذخیره میکند).
ساعت را به وقت ایران وارد کنید. مقدار Unix خروجی همان لحظه را برای API برمیگرداند (مبنای ذخیرهسازی API همچنان UTC است).
هنوز محاسبه نشده
برای فراخوانی هر متد کافی است Base URL و کلید API را داشته باشید. مسیر پیشنهادی: کلید را از پنل بگیرید ← هدر X-API-KEY را بفرستید ← یکی از متدهای ارسال را تست کنید.
بهمنظور هویتسنجی در هنگام استفاده از وبسرویسهای SMS.ir، ملزم به ارسال کلید خصوصی در بخش هدر درخواست میباشید. کلیدهای خصوصی شما در پنل برنامهنویسان قابل مشاهده و مدیریت هستند.
برای انجام تنظیمات ضروری یا شخصیسازیشده، از هدرهای مشخصشده در جدول زیر استفاده کنید.
| کلید | مقدار | عملکرد |
|---|---|---|
|
ACCEPT
| application/json یا application/xml | دریافت خروجی با فرمت Json یا Xml |
|
X-API-KEY
| کلید تعریفشده در پنل | احراز هویت |
|
Content-Type
| application/json | الزامی برای درخواستهای POST با بدنه JSON |
تمامی درخواستهای ارسالی دارای مدل بازگشتی یکپارچه با ساختار زیر میباشند:
| مشخصه | توضیح |
|---|---|
| status | کد وضعیت عملیات (مطابق جدول کدهای وضعیت) |
| message | توضیحات وضعیت درخواست |
| data | دیتای بازگشتی؛ نوع آن بسته به متد فراخوانیشده متفاوت است |
تمامی درخواستهای ارسالی دارای HTTP Status Codeهای بازگشتی مطابق جدول زیر هستند:
| کد وضعیت | توضیح |
|---|---|
| 200 | عملیات موفقیتآمیز |
| 400 | وقوع خطای منطقی |
| 401 | وجود خطا در فرآیند احراز هویت |
| 429 | تعداد درخواست غیرمجاز (Rate Limit) |
| 500 | خطای غیرمنتظره سمت سرور |
مقادیر زمانی در API بهصورت Unix Time و بر حسب UTC هستند.
Sandbox محیطی برای تست یکپارچگی است. ساختار URL، هدرها و JSON دقیقاً مثل Production است، اما پیامک واقعی ارسال نمیشود. با این محیط میتوانید فرمت پاسخ و خطا را ببینید، بدون کسر اعتبار و بدون دریافت SMS.
همان Base URL و ساختار Production، با کلید API جداگانه. پاسخ شبیهسازیشده برمیگردد.
فقط برای تستپیامک ارسال نمیشود، گزارشی در پنل ثبت نمیشود و اعتبار کسر نمیشود. فقط HTTP را میبینید.
بدون کسر اعتبارفقط با قالب تستی Sandbox کار میکند. قالبهای Production اینجا معتبر نیستند.
فقط قالب تستاگر template دیگری بفرستید، خطای «قالب یافت نشد» میگیرید.
کلید Sandbox با کلید Production فرق دارد. در آزمایشگاه API یک کلید Sandbox از پیش در هدر X-API-KEY قرار دارد تا بدون paste دستی تست کنید.
پیامک واقعی ارسال نمیشود و اعتبار کسر نمیگردد. برای Verify در Sandbox فقط templateId=123456 و قالب کد تایید شما: #Code# معتبر است.
Sandbox و Production از یک Base URL استفاده میکنند. تفاوت فقط در X-API-KEY است.
| هدر | مقدار در Sandbox | توضیح |
|---|---|---|
|
X-API-KEY
| کلید Sandbox | در آزمایشگاه API از پیش تنظیم شده |
|
Accept
|
application/json
| پیشفرض اکثر endpointها |
|
Accept
|
text/plain
| فقط برای POST /send/verify |
|
Content-Type
|
application/json
| برای POST/DELETE با بدنه JSON |
| پارامتر | نوع | مقدار مجاز در Sandbox | توضیح |
|---|---|---|---|
|
mobile
|
String | هر شماره معتبر | فقط برای ساختار درخواست؛ SMS ارسال نمیشود |
|
templateId
|
Integer |
فقط این مقدار
123456
|
سایر شناسهها خطای «قالب یافت نشد» میدهند |
|
parameters
|
Array |
نام متغیر
Code
نمونه JSON
[{"name":"Code","value":"12345"}]
|
name باید با متغیر قالب (#Code#) یکی باشد |
اینجا میتوانید endpointها را با کلید Sandbox به https://api.sms.ir/v1 بفرستید و پاسخ سرور را ببینید.
preset انتخاب کنید، در صورت نیاز JSON را ویرایش کنید و ارسال بزنید.
data و زمان پاسخ.
اعتبار کسر نمیشود و گزارشی در پنل ثبت نمیشود.
این متد برای ارسال یک متن پیامک به گروهی از شماره موبایلها مورد استفاده قرار میگیرد. با مقداردهی به پارامتر sendDateTime میتوانید از قابلیت ارسال زمانبندیشده استفاده کنید.
| پارامتر | نوع | وضعیت | توضیح |
|---|---|---|---|
|
lineNumber
| Long | اجباری | شماره خط ارسالی |
|
messageText
| String | اجباری | متن پیام کوتاه |
|
mobiles
| Array[String] | اجباری | شماره موبایلها |
|
sendDateTime
| UnixTime | اختیاری | زمان ارسال پیامک در آینده (خالی = ارسال در لحظه) |
messageIds مقدار 0 یعنی شماره در لیست سیاه است؛ مقدار null یعنی شماره نامعتبر یا متن بیش از حد مجاز.
این متد برای ارسال متنهای متفاوت به شمارههای مختلف استفاده میشود. تعداد موبایلها و متنها باید دقیقاً برابر باشند.
| پارامتر | نوع | وضعیت | توضیح |
|---|---|---|---|
|
lineNumber
| Long | اجباری | شماره خط ارسالی |
|
messageTexts
| Array[String] | اجباری | متن پیامها |
|
mobiles
| Array[String] | اجباری | شماره موبایلها |
|
sendDateTime
| UnixTime | اختیاری | زمان ارسال |
messageIds مقدار 0 یعنی شماره در لیست سیاه است؛ مقدار null یعنی شماره نامعتبر یا متن بیش از حد مجاز.
برای OTP و پیامک الگومند: متن از قالب تأییدشده پنل میآید؛ در API فقط شماره، templateId و مقادیر متغیرها را میفرستید.
text/plain
# بنویسید؛ مثلاً:
کد تأیید شما: #Code#
| پارامتر | نوع | وضعیت | توضیح |
|---|---|---|---|
|
mobile
| String | اجباری | شماره موبایل گیرنده |
|
templateId
| Integer | اجباری | شناسه قالب (قالبها در پنل تعریف میشوند) |
|
parameters
| Array[Parameter] | اجباری | آرایهای از مدل Parameter برای جایگزینی |
| پارامتر | نوع | وضعیت | توضیح |
|---|---|---|---|
name | String | اجباری | نام متغیر در قالب، بدون # (مثلاً Code) |
value | String | اجباری | مقدار جایگزین؛ حداکثر ۲۵ کاراکتر |
نمونه بدنه درخواست Verify. مقادیر را با قالب و شماره خود جایگزین کنید:
متن قالب را وارد کنید، مقادیر متغیرها را تنظیم کنید و JSON آماده را کپی یا در Sandbox تست کنید.
قالب Sandbox مخصوص تست API است و از قبل روی سرور تنظیم شده: templateId = 123456 با متن کد تأیید شما: #Code#.
قالبهای پنل Production در Sandbox پشتیبانی نمیشوند. پیامک واقعی ارسال نمیشود و اعتباری کسر نمیشود.
9123456789
09123456789
989123456789
#Code#
شناسه قالب و موبایل را بالا وارد کنید، سپس هر متغیر را با نام (بدون #) و مقدار اضافه کنید.
{}این متد برای ارسال پیامک از طریق URL مورد استفاده قرار میگیرد. کافی است پارامترهای مورد نیاز را در قالب Query Params در آدرس مشخصشده قرار دهید. متد قابل استفاده: GET و POST.
| پارامتر | نوع | وضعیت | توضیح |
|---|---|---|---|
username | String | اجباری | نام کاربری |
password | String | اجباری | کلید خصوصی (از پنل برنامهنویسان) |
line | Long | اجباری | شماره خط |
mobile | String | اجباری | شماره موبایل |
text | String | اجباری | متن پیامک |
| پارامتر | نوع | وضعیت | توضیح |
|---|---|---|---|
packId | Guid | اجباری | شناسه مجموعه ارسال (در URL) |
با متدهای این بخش میتوانید وضعیت ارسال، دلیوری و آرشیو پیامکهای ارسالی را پیگیری کنید.
با شناسه یکتای پیامک (messageId) وضعیت دلیوری (Delivery) آن قابل دریافت است.
اطلاعات کلی مجموعه ارسالهای روز جاری را دریافت کنید.
| پارامتر | نوع | وضعیت | توضیح |
|---|---|---|---|
PageSize | Integer | اختیاری | تعداد آیتم در صفحه (پیشفرض: 100) |
PageNumber | Integer | اختیاری | شماره صفحه (پیشفرض: 1) |
با شناسه مجموعه ارسال (packId)، گزارش پیامکهای ارسالی آن درخواست بههمراه وضعیت دلیوری هرکدام را دریافت کنید.
گزارشی از ارسالهای انجامشده در روز جاری قابل دریافت است.
| پارامتر | نوع | وضعیت | توضیح |
|---|---|---|---|
pageSize | Integer | اختیاری | تعداد آیتم در صفحه (حداکثر و پیشفرض: 100) |
pageNumber | Integer | اختیاری | شماره صفحه (پیشفرض: 1) |
mobile | String | اختیاری | فیلتر بر اساس شماره موبایل |
sortByNewest | Boolean | اختیاری | مرتبسازی نزولی بر اساس تاریخ (پیشفرض: false) |
گزارشی از ارسالهای انجامشده در گذشته (تا انتهای روز قبل) را دریافت کنید.
| پارامتر | نوع | وضعیت | توضیح |
|---|---|---|---|
fromDate | Integer (UnixTime) | اختیاری | از تاریخ |
toDate | Integer (UnixTime) | اختیاری | تا تاریخ |
pageSize | Integer | اختیاری | تعداد آیتم در صفحه |
pageNumber | Integer | اختیاری | شماره صفحه |
mobile | String | اختیاری | فیلتر بر اساس شماره موبایل |
sortByNewest | Boolean | اختیاری | مرتبسازی نزولی بر اساس تاریخ (پیشفرض: false) |
متدهای این بخش برای دریافت پیامکهای وارده به خطوط اختصاصی شما استفاده میشوند.
تازهترین پیامکهای دریافتی را مشاهده کنید. هر پیامک دریافتی تنها یکبار توسط این متد قابل دسترسی است و پس از خوانده شدن، دیگر برنمیگردد.
| پارامتر | نوع | وضعیت | توضیح |
|---|---|---|---|
count | Integer | اختیاری | تعداد درخواستی (حداکثر و پیشفرض: 100) |
گزارش پیامکهای دریافتی روز جاری (خواندهشده و نشده). در آغاز ساعات روز، گزارش پیامهای دریافتی روز گذشته نیز با همین متد قابل دریافت است.
| پارامتر | نوع | وضعیت | توضیح |
|---|---|---|---|
pageSize | Integer | اختیاری | تعداد آیتم در صفحه (حداکثر: 100) |
pageNumber | Integer | اختیاری | شماره صفحه |
sortByNewest | Boolean | اختیاری | مرتبسازی بر اساس تاریخ (پیشفرض: false) |
mobile | String | اختیاری | فیلتر بر اساس شماره فرستنده |
گزارشی از پیامکهای دریافتی در گذشته (تا انتهای روز قبل).
| پارامتر | نوع | وضعیت | توضیح |
|---|---|---|---|
fromDate | Integer (UnixTime) | اختیاری | از تاریخ |
toDate | Integer (UnixTime) | اختیاری | تا تاریخ |
pageSize | Integer | اختیاری | تعداد آیتم در صفحه |
pageNumber | Integer | اختیاری | شماره صفحه |
mobile | String | اختیاری | فیلتر بر اساس شماره فرستنده |
برای مشاهده مقدار اعتبار فعلی پنل از متد زیر استفاده کنید.
با این متد، لیست خطوط آماده استفاده برای ارسال قابل مشاهده است.
فیلد 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 وضعیت رسیدن پیامک به گوشی را نشان میدهد:
| کد | توضیح | کد | توضیح |
|---|---|---|---|
| 1 | رسیده به گوشی | 5 | رسیده به مخابرات |
| 2 | نرسیده به گوشی | 6 | خطا |
| 3 | پردازش در مخابرات | 7 | لیست سیاه |
| 4 | نرسیده به مخابرات | ||
اگر در سرویس خود نیاز به محدودیت دسترسی (IP Restriction) دارید، برای جلوگیری از مسدود شدن درخواستها هنگام Failover، هر دو IP زیر را در فایروال سرور خود مجاز (Whitelist) کنید:
وضعیت لحظهای API، OTP و سرشمارهها را در مانیتورینگ SMS.ir ببینید.
پکیج رسمی Node، Laravel، Python و .NET را با یک دستور نصب کنید و بعد در آزمایشگاه API تست بگیرید.
ریپازیتوری، صفحه پکیجها و وضعیت سرویس