این سند، مرجع کامل اتصال به سرویس دایرکت و کامنت اینستاگرام از طریق BoxAPI است. تمامی اندپوینتها، پارامترهای ورودی، نمونه درخواست و پاسخ در ادامه آورده شده است.
احراز هویت (Authentication)
تمامی اندپوینتهای این API از روش احراز هویت مبتنی بر هدر استفاده میکنند. برای هر درخواست باید هدر زیر را ارسال کنید:
| Header | مقدار | توضیحات |
|---|---|---|
X-Api-Key |
YOUR_ACCESS_TOKEN |
توکن دسترسی اختصاصی شما. این توکن را میتوانید از بخش «تنظیمات API» در پنل کاربری BoxAPI دریافت کنید. |
وبهوک (Webhook)
برای دریافت رویدادهای لحظهای مانند پیامهای دایرکت، کامنتها و پاسخ اکشنهای آسنکرون (مانند follow_status و list_posts)، باید یک آدرس Webhook در بخش «تنظیمات API» پنل کاربری خود ثبت کنید.
- آدرس Webhook میتواند متعلق به سرویس اختصاصی شما، وبهوک n8n یا هر نرمافزار اتوماسیون دیگری باشد.
- متد ارسال درخواست به Webhook میتواند
POSTیاGETباشد.
نمونه Webhook:
[
{
"headers": {
"host": "https://YOURWEBSITE.COM",
"x-real-ip": "1.1.1.1",
"content-type": "application/json"
},
"params": {},
"query": {},
"body": {
"event_id": "client_ig_111111111_1111111116",
"event_type": "messaging",
"account_id": "00000000-0000-0000-0000-000000000000",
"data": {
"time": 1785081317446,
"id": "1234567890",
"messaging": [
{
"sender": { "id": "1234567890" },
"recipient": { "id": "1234567890" },
"timestamp": 1785081317081,
"message": {
"mid": "abcxyz",
"text": "سلام"
}
}
]
}
},
"webhookUrl": "https://YOURWEBSITE.COM/webhook/zzzzzzzz",
"executionMode": "test"
}
]
data.messaging[].sender.id همان recipient_id است که در اندپوینت ارسال پیام (send_message) استفاده میشود.دامنه (Domain) و Redirect URL
دامنه سرویس
دامنه سرویس شما باید در پنل کاربری ثبت شود. در صورتی که دامنهای ثبت نکرده باشید، بهصورت پیشفرض مقدار https://boxapi.ir در نظر گرفته میشود.
Redirect URL
در بخش «تنظیمات API» میتوانید یک Redirect URL تعریف کنید. کاربران پس از ورود موفق به پیج اینستاگرام خود (از طریق لینک ورود رسمی اینستاگرام) به این آدرس هدایت میشوند.
Redirect URL باید زیرمجموعهای از Domain ثبتشده شما باشد و امکان تعیین آدرسی خارج از دامنه ثبتشده وجود ندارد.دریافت اطلاعات سرویس
/service/info
اطلاعات کامل حساب کاربری، پلن اشتراک، تنظیمات دامنه/ریدایرکت و لیست پیجهای متصل را برمیگرداند.
پارامترها
| نام | محل | نوع | الزامی | توضیحات |
|---|---|---|---|---|
X-Api-Key |
Header | string | بله | توکن دسترسی کاربر |
نمونه پاسخ ۲۰۰ OK
{
"success": true,
"message": "string",
"status_code": 0,
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"domain": "string",
"token": "string",
"login_redirect_url": "string",
"instagram_oauth_url": "string",
"user": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"email": "string",
"phone_number": "string"
},
"plan": {
"name": "string",
"slug": "string",
"description": "string",
"account_limit": 0,
"price": 0,
"duration_days": 0,
"items": ["string"]
},
"accounts": [
{
"id": "00000000-0000-0000-0000-000000000000",
"username": "string",
"instagram_user_id": "string",
"profile_photo": "string",
"internal_token": "string",
"is_active": true,
"expires_at": "2026-07-26T15:40:14.480Z"
}
]
}
}
توضیح فیلدهای پاسخ
| فیلد | توضیحات |
|---|---|
data.domain |
دامنه ثبتشده کاربر (یا مقدار پیشفرض boxapi.ir) |
data.token |
توکن دسترسی فعلی کاربر (X-Api-Key) |
data.login_redirect_url |
آدرس ریدایرکت پس از ورود موفق کاربر به اینستاگرام |
data.instagram_oauth_url |
لینک اختصاصی ورود رسمی اینستاگرام برای اتصال پیج جدید |
data.plan |
اطلاعات پلن اشتراک فعلی از جمله سقف تعداد پیج مجاز (account_limit) |
data.accounts |
لیست پیجهای اینستاگرام متصلشده به این حساب |
ارسال پیام دایرکت
/service/actions/send_message
این اندپوینت برای ارسال پیام متنی یا پیام دکمهدار (Button Template) در دایرکت اینستاگرام استفاده میشود.
پارامترهای بدنه درخواست (Body)
| نام | نوع | الزامی | توضیحات |
|---|---|---|---|
account_id |
string (UUID) | بله | آیدی پیج اینستاگرامی که پیام از طریق آن ارسال میشود (از خروجی /service/accounts) |
recipient_id |
string | بله | آیدی گیرنده پیام. این مقدار از فیلد sender.id در Webhook دریافت میشود |
message |
string | بله | متن پیام ارسالی |
buttons |
array | خیر | آرایهای از دکمهها برای ارسال پیام تعاملی (اختیاری) |
ساختار هر آیتم در آرایه buttons
| نام | نوع | توضیحات |
|---|---|---|
type |
string | نوع دکمه؛ مقادیر مجاز: postback یا web_url |
title |
string | عنوان نمایشی دکمه |
payload |
string | مقدار بازگشتی هنگام کلیک (فقط برای نوع postback) |
url |
string | آدرس مقصد (فقط برای نوع web_url) |
نمونه درخواست ساده
{
"account_id": "00000000-0000-0000-0000-000000000000",
"recipient_id": "1234567890",
"message": "Hello"
}
نمونه درخواست همراه با دکمه
{
"account_id": "00000000-0000-0000-0000-000000000000",
"recipient_id": "1234567890",
"message": "برای ادامه یکی را انتخاب کنید",
"buttons": [
{ "type": "postback", "title": "شروع", "payload": "START" },
{ "type": "web_url", "title": "سایت", "url": "https://example.com" }
]
}
پاسخ به کامنت
/service/actions/reply_comment
این اندپوینت برای ارسال پاسخ (ریپلای) به یک کامنت مشخص روی پست اینستاگرام استفاده میشود.
پارامترهای بدنه درخواست (Body)
| نام | نوع | الزامی | توضیحات |
|---|---|---|---|
account_id |
string (UUID) | بله | آیدی پیج اینستاگرامی که کامنت روی پست آن قرار دارد |
comment_id |
string | بله | آیدی کامنت مورد نظر؛ این مقدار از طریق Webhook دریافت میشود |
message |
string | بله | متن پاسخ کامنت |
نمونه درخواست
{
"account_id": "00000000-0000-0000-0000-000000000000",
"comment_id": "1234567890",
"message": "پاسخ کامنت"
}
بررسی وضعیت فالو
/service/actions/follow_status
این اندپوینت مشخص میکند که آیا کاربری که پیام یا کامنت ارسال کرده، پیج مورد نظر را فالو کرده است یا خیر. این اندپوینت بهصورت آسنکرون کار میکند.
پارامترهای بدنه درخواست (Body)
| نام | نوع | الزامی | توضیحات |
|---|---|---|---|
account_id |
string (UUID) | بله | آیدی پیج اینستاگرامی مبدأ بررسی |
customer_id |
string | بله | آیدی کاربری که وضعیت فالوی او بررسی میشود (همان آیدی ارسالکننده پیام یا کامنت) |
نمونه درخواست
{
"account_id": "00000000-0000-0000-0000-000000000000",
"customer_id": "1234567890"
}
دریافت لیست پستها
/service/actions/list_posts
این اندپوینت، لیست پستهای منتشرشده در پیج را برمیگرداند. نتیجه درخواست پس از پردازش، از طریق Webhook ارسال میشود.
پارامترهای بدنه درخواست (Body)
| نام | نوع | الزامی | توضیحات |
|---|---|---|---|
account_id |
string (UUID) | بله | آیدی پیج اینستاگرامی مورد نظر |
fields |
array of string | خیر | لیست فیلدهایی که برای هر پست بازگردانده شود؛ مثال: id, media_type, media_url, permalink, caption, timestamp |
limit |
number | خیر | تعداد پستهای بازگشتی |
نمونه درخواست
{
"account_id": "00000000-0000-0000-0000-000000000000",
"fields": ["id", "media_type", "media_url", "permalink", "caption", "timestamp"],
"limit": 10
}
دریافت لیست پیجهای متصل
/service/accounts
این اندپوینت اطلاعات تمامی پیجهایی که از طریق لینک ورود اختصاصی شما (instagram_oauth_url) لاگین شدهاند را بهصورت صفحهبندیشده برمیگرداند.
نمونه پاسخ ۲۰۰ OK
{
"success": true,
"message": "string",
"status_code": 0,
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"username": "string",
"instagram_user_id": "string",
"profile_photo": "string",
"internal_token": "string",
"is_active": true,
"expires_at": "2026-07-26T19:49:40.273Z"
}
],
"pagination": {
"current_page": 0,
"last_page": 0,
"per_page": 0,
"total": 0,
"from": 0,
"to": 0
}
}
توضیح فیلدهای هر پیج
| فیلد | توضیحات |
|---|---|
id |
آیدی داخلی پیج؛ همان مقداری که در سایر اندپوینتها بهعنوان account_id استفاده میشود |
username |
نام کاربری پیج اینستاگرام |
instagram_user_id |
آیدی عددی رسمی پیج در اینستاگرام |
is_active |
وضعیت فعال بودن اتصال پیج |
expires_at |
تاریخ انقضای دسترسی پیج؛ در صورت انقضا نیاز به ورود مجدد است |
مشاهده پروفایل کاربر
/service/actions/show_profile
این اندپوینت اطلاعات پروفایل عمومی یک کاربر اینستاگرام (نام کاربری، نام نمایشی و عکس پروفایل) را برمیگرداند. این اندپوینت بهصورت آسنکرون کار میکند.
پارامترهای بدنه درخواست (Body)
| نام | نوع | الزامی | توضیحات |
|---|---|---|---|
account_id |
string (UUID) | بله | آیدی پیج اینستاگرامی مبدأ درخواست |
sender_id |
string | بله | آیدی کاربری که اطلاعات پروفایل او درخواست میشود؛ همان آیدی ارسالکننده پیام یا کامنت |
نمونه درخواست
{
"sender_id": "1111111111111111111",
"account_id": "2222222222"
}
فیلدهای بازگشتی از طریق Webhook
| فیلد | توضیحات |
|---|---|
username |
نام کاربری اینستاگرام کاربر |
name |
نام نمایشی (Display Name) کاربر |
profile_pic |
آدرس عکس پروفایل کاربر |
حذف پیج
/service/accounts/{id}
این اندپوینت برای حذف کامل یک پیج از حساب کاربری شما استفاده میشود.
پارامترهای مسیر (Path Parameters)
| نام | نوع | الزامی | توضیحات |
|---|---|---|---|
id |
string (UUID) | بله | همان account_id پیج مورد نظر برای حذف |
نمونه پاسخ ۲۰۰ OK
{
"success": true,
"message": "Account deleted successfully",
"status_code": 200,
"data": null
}
محدودیت درخواست (Rate Limit)
محدودیت ارسال درخواست در BoxAPI دقیقاً بر مبنای همان محدودیتهای رسمی «Instagram API with Instagram Login» متعلق به متا (Meta for Developers) اعمال میشود. این محدودیتها بهصورت جداگانه برای هر پیج اینستاگرامی (Instagram Professional Account) محاسبه میشوند، نه بهصورت استخر مشترک بین پیجها.
محدودیت پیام دایرکت (send_message)
| نوع محتوای پیام | سقف مجاز به ازای هر پیج |
|---|---|
| پیام متنی، لینک، Reaction و استیکر | ۱۰۰ درخواست در ثانیه |
| پیام حاوی فایل صوتی یا ویدیویی | ۱۰ درخواست در ثانیه |
محدودیت پاسخ به کامنت (reply_comment)
پاسخهای ارسالی به کامنتهای پست و ریلز (Private Reply) با نرخ ساعتی محدود میشوند، نه ثانیهای:
| نوع اکشن | سقف مجاز به ازای هر پیج |
|---|---|
| پاسخ به کامنت پست/ریلز | ۷۵۰ درخواست در ساعت |
نحوه محاسبه در حسابهای چندپیجی
هر پیج، سهمیه اختصاصی و مستقل خود را دارد و این سهمیه بین پیجهای مختلف حساب شما به اشتراک گذاشته نمیشود؛ یعنی رسیدن یک پیج به سقف مجاز، هیچ تأثیری بر سهمیه سایر پیجهای متصل ندارد.
| تعداد پیجهای متصل | سقف پیام متنی/لینک/استیکر | سقف پیام صوتی/ویدیویی | سقف پاسخ کامنت |
|---|---|---|---|
| ۱ پیج | ۱۰۰ درخواست/ثانیه | ۱۰ درخواست/ثانیه | ۷۵۰ درخواست/ساعت |
| هر پیج اضافه | ۱۰۰ درخواست/ثانیه (مستقل و جداگانه برای همان پیج) | ۱۰ درخواست/ثانیه (مستقل و جداگانه برای همان پیج) | ۷۵۰ درخواست/ساعت (مستقل و جداگانه برای همان پیج) |
مدیریت خودکار توسط BoxAPI
نیازی به محاسبه دستی یا مدیریت این سهمیه از سمت شما نیست؛ سیستم BoxAPI بهصورت خودکار مصرف درخواستهای هر پیج را پایش میکند و در صورت نزدیک شدن به سقف مجاز، مانع از بروز خطا در سمت سیستم شما میشود. درخواستهای مازاد بر سهمیه لحظهای، بهجای رد شدن، در صف قرار گرفته و پس از آزاد شدن ظرفیت (باز شدن پنجره ثانیهای یا ساعتی) بهصورت خودکار ارسال میشوند.
نکات مهم و حریم خصوصی
- حذف دسترسی از سمت کاربر اینستاگرام: در صورتی که کاربر نهایی دسترسی سرویس را از تنظیمات اینستاگرام خود حذف کند، یا درخواست حذف به BoxAPI ارسال شود، این عملیات بدون اطلاعرسانی قبلی انجام خواهد شد.
- پاکسازی کامل اطلاعات: در صورت حذف دسترسی پیج — چه از سمت کاربر، چه از سمت BoxAPI و چه از سمت شما — اطلاعات آن پیج بهطور کامل و غیرقابل بازگشت حذف میشود.
- حریم خصوصی دادهها: هیچیک از اطلاعات کاربران بهصورت مستقیم از سمت اینستاگرام در اختیار شما (توسعهدهنده) قرار نمیگیرد؛ تمامی اطلاعات صرفاً نزد BoxAPI نگهداری و پردازش میشود.
- عدم امکان ارسال پیام انبوه: ساخت ربات ارسال پیام انبوه (Bulk Messaging) در اینستاگرام از طریق این سرویس امکانپذیر نیست. صرفاً امکان ارسال پیام به کاربرانی وجود دارد که پیشتر با پیج شما تعامل داشتهاند؛ یعنی کامنتی گذاشتهاند یا پیامی در دایرکت ارسال کردهاند. در صورت شناسایی رفتار اسپمگونه، حساب کاربری بسته خواهد شد.
- تخلف و قطع دسترسی: در صورت مشاهده هرگونه تخلف از قوانین استفاده از این API، BoxAPI میتواند دسترسی شما به سرویس را بدون اطلاع قبلی و بهطور یکطرفه قطع کند.