MailLandDocs
مرجع

کدهای خطا

مرجع کامل کدهای خطای API Mail.Land و معانی آن‌ها

هر پاسخ خطا از API MailLand شامل یک فیلد code با کد خطای قابل‌خواندن توسط ماشین و یک فیلد message با توضیح قابل‌خواندن توسط انسان است.

فرمت پاسخ خطا

Error response
{
  "code": "DOMAIN_NOT_VERIFIED",
  "message": "Domain is not verified",
  "timestamp": "2026-02-18T12:35:00Z",
  "traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01"
}

برخی خطاها شامل جزئیات اضافی (details) هستند:

Error response with details
{
  "code": "IP_RATE_LIMIT_EXCEEDED",
  "message": "Too many requests from this IP. Retry after 45 seconds.",
  "details": {
    "limit": 300,
    "current": 301,
    "retryAfter": 45,
    "resetAt": "2026-02-18T12:35:00Z"
  }
}

اعتبارسنجی درخواست (400)

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

کدتوضیحات
INVALID_REQUESTدرخواست نامعتبر عمومی
VALIDATION_FAILEDیک یا چند فیلد در اعتبارسنجی رد شدند
INVALID_EMAIL_FORMATفرمت آدرس ایمیل نامعتبر است
WEBHOOK_DESTINATION_NOT_ALLOWEDنشانی وب‌هوک توسط سیاست مقصد رد شد: وب‌هوک‌ها فقط روی HTTPS و درگاه ۴۴۳ تحویل داده می‌شوند و نباید به سرورها، نشانی‌ها یا نام‌های میزبان خود MailLand اشاره کنند
MISSING_CONTENTاز ۲۰۲۶-۰۴ منسوخ شده. به‌جای آن از VALIDATION_FAILED استفاده کنید: اندپوینت‌های send/scheduled اکنون خطاهای اعتبارسنجی ساخت‌یافته برمی‌گردانند.
CONTENT_TOO_LARGE"The message is too large to send: it would exceed the platform's message-size limit. Reduce the HTML, text, attachments or recipients.": حجم پیام از حد مجاز پلتفرم فراتر می‌رود. POST /v1/transactional/send و send-batch آن را با 413 برمی‌گردانند؛ چیزی در صف قرار نمی‌گیرد. پیام را کوچک‌تر کنید. در درون‌ریزی CSV کد 400 است
transactional_recipient_limit_exceededبیش از ۵ گیرنده روی یک اعتبارنامهٔ تراکنشی (کد با حروف کوچک)
marketing_recipient_limit_exceededبیش از ۱۰۰۰ گیرنده روی یک اعتبارنامهٔ بازاریابی (کد با حروف کوچک)
VALIDATION_FAILEDارسال دسته‌ای با بیش از ۱۰٬۰۰۰ گیرنده
SEND_FAILEDعملیات ارسال ایمیل ناموفق بود، از جمله «تمام گیرندگان سرکوب شده‌اند»
BATCH_SEND_FAILEDعملیات ارسال دسته‌ای ناموفق بود
IDEMPOTENCY_KEY_INVALIDکلید تکرارناپذیری خالی، نامعتبر یا بیش از ۲۵۵ نویسه است، یا هدر بیش از یک‌بار ارسال شده است (فقط send/send-batch)
IDEMPOTENCY_KEY_CONFLICTهدر X-Idempotency-Key و فیلد idempotencyKey هر دو ارسال شده‌اند و مقادیرشان متفاوت است
INVALID_CURSORپارامتر صفحه‌بندی مکان‌نما نادرست است
PASSWORD_REQUIREDتأیید رمز عبور الزامی است
RECIPIENT_SUPPRESSEDگیرنده در فهرست سرکوب قرار دارد

احراز هویت (401)

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

کدتوضیحات
UNAUTHORIZEDX-API-Key وجود ندارد، نامعتبر است، منقضی شده یا لغو شده است: میان‌افزار کلید API در همهٔ این حالت‌ها همین یک کد را همراه با message توصیفی برمی‌گرداند و بین موارد مفقود/نامعتبر/منقضی/لغوشده از طریق کد تمایزی قائل نمی‌شود. رمز عبور نادرست هنگام ورود نیز 401 UNAUTHORIZED برمی‌گرداند.
LOGIN_REQUIREDورود به حساب برای این عملیات الزامی است

احراز هویت دو مرحله‌ای

خطاهای احراز هویت دو مرحله‌ای 400 INVALID_REQUEST را همراه با message توصیفی برمی‌گردانند (مثلاً «Invalid code»، «2FA is already enabled»). کد خطای اختصاصی برای احراز هویت دو مرحله‌ای وجود ندارد، فیلد message را بخوانید.

مجوزدهی (403)

هنگامی بازگردانده می‌شود که کاربر احراز هویت‌شده مجوز انجام عملیات درخواستی را نداشته باشد.

کدتوضیحات
FORBIDDENعدم دسترسی عمومی
INSUFFICIENT_PERMISSIONSکاربر نقش یا مجوز لازم را ندارد
ACCOUNT_SUSPENDEDحساب کاربری تعلیق شده است
ACCOUNT_DISABLEDحساب کاربری غیرفعال شده است
ACCOUNT_NOT_ACTIVEحساب کاربری فعال نیست
IP_NOT_ALLOWEDآدرس IP کلاینت در فهرست مجاز اعتبارنامه نیست
VALIDATION_CREDENTIAL_REQUIREDبرای نقاط پایانی اعتبارسنجی ایمیل کلید API محصول اعتبارسنجی لازم است. کلید ارسال یا دریافت رد می‌شود؛ نشست ورود به حساب یا کلید محصول اعتبارسنجی پذیرفته می‌شود
PLAN_LIMIT_REACHEDمحدودیت منابع پلن به حداکثر رسیده است، ارتقا الزامی است
SENDING_BLOCKEDسطح تأیید حساب اجازهٔ این ارسال را نمی‌دهد. نکته: رد SendingBlocked خودِ موتور سیاست‌گذاری 403 است؛ همان کد از مسیر سیاست نرخ/گرم‌سازی 429 است، به بخش موتور سیاست‌گذاری در پایین مراجعه کنید.
SUBSCRIPTION_EXPIREDاشتراک منقضی شده است
NO_ACTIVE_SUBSCRIPTIONاشتراک فعالی یافت نشد
TENANT_APPROVAL_REQUIREDحساب پیش از ارسال در انتظار بررسی است. تلاش مجدد کمکی نمی‌کند؛ با پشتیبانی تماس بگیرید
MARKETING_NOT_YET_ALLOWEDارسال بازاریابی هنوز باز نیست. پس از داشتن سابقهٔ تراکنشی تمیز (دست‌کم ۵۰۰ ایمیل تراکنشی تحویل‌شده در دست‌کم ۷ روز، با بانس سخت زیر ۲٪ و شکایت زیر ۰٫۱٪) خودکار باز می‌شود
MARKETING_SUSPENDEDارسال بازاریابی به‌طور موقت در کل پلتفرم در دسترس نیست. ایمیل تراکنشی تحت‌تأثیر نیست؛ کمپین‌ها و اتوماسیون‌ها نگه‌داری می‌شوند و با فعال‌شدن بازاریابی ادامه می‌یابند
ACTION_REQUIREDاقدام کاربر پیش از ازسرگیری ارسال الزامی است. همچنین تا زمانی که فضای کاری یک توقف تحویل‌پذیری فعال داشته باشد (نقض نرخ برگشتی/شکایت)، برای هر ارسالی بازگردانده می‌شود؛ SMTP relay برای همین توقف کد 550 برمی‌گرداند. به توقف‌های تحویل‌پذیری مراجعه کنید

یافت نشد (404)

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

کدتوضیحات
RESOURCE_NOT_FOUNDمنبع عمومی یافت نشد
USER_NOT_FOUNDکاربر وجود ندارد
WEBHOOK_NOT_FOUNDوب‌هوک وجود ندارد
DELIVERY_NOT_FOUNDتحویل وب‌هوک وجود ندارد

بیشتر پاسخ‌های ۴۰۴ از کد RESOURCE_NOT_FOUND استفاده می‌کنند. فیلد message اطلاعات بیشتری دربارهٔ منبع یافت‌نشده ارائه می‌دهد (مانند "Domain not found"، "Template not found"، "Campaign not found"). اندپوینت‌های وب‌هوک استثنا هستند: تلاش مجدد برای تحویل یک وب‌هوک از WEBHOOK_NOT_FOUND / DELIVERY_NOT_FOUND استفاده می‌کند.

تداخل (409)

هنگامی بازگردانده می‌شود که عملیات با وضعیت فعلی منبع در تداخل باشد.

کدتوضیحات
CONFLICTتداخل عمومی منبع
IDEMPOTENCY_KEY_REUSEDکلید تکرارناپذیری هم‌اکنون برای نقطهٔ پایانی دیگری در این حساب استفاده می‌شود (فقط send/send-batch)

دامنه و ارسال (422)

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

کدتوضیحات
DOMAIN_NOT_FOUNDدامنه در فضای کاری وجود ندارد
DOMAIN_NOT_VERIFIEDدامنه تأیید نشده است: ابتدا تنظیمات DNS را تکمیل کنید
DOMAIN_NOT_ALLOWED_FOR_CREDENTIALاعتبارنامه مجوز استفاده از این دامنهٔ ارسال را ندارد
CAMPAIGN_LINK_BLOCKEDپیوندی در کمپین به مقصدی ناامن اشاره می‌کند؛ کمپین زمان‌بندی یا ارسال نمی‌شود
DOMAIN_SUSPENDEDدامنه تعلیق شده است
DOMAIN_VERIFICATION_EXPIREDتأیید دامنه منقضی شده است، مجدداً تأیید کنید

پرداخت الزامی (402)

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

کدتوضیحات
INSUFFICIENT_CREDITSاعتبار کافی برای تکمیل عملیات وجود ندارد

محدودیت نرخ (429)

هنگامی بازگردانده می‌شود که درخواست از محدودیت‌های نرخ فراتر رود. معمولاً شامل هدر Retry-After است؛ اگر وجود نداشت، به‌جای فرض نبودِ زمان انتظار، از تأخیر نمایی استفاده کنید.

محدودیت‌های نرخ API

کدتوضیحات
RATE_LIMIT_EXCEEDEDمحدودیت نرخ عمومی API از حد مجاز فراتر رفته است
IP_RATE_LIMIT_EXCEEDEDمحدودیت نرخ مبتنی بر IP از حد مجاز فراتر رفته است
SUPPORT_RATE_LIMITEDمحدودیت نرخ API پشتیبانی از حد مجاز فراتر رفته است
TOO_MANY_LOGIN_ATTEMPTSتلاش‌های ورود ناموفق بیش از حد، قفل موقت

محدودیت‌های نرخ ارسال ایمیل

کدتوضیحات
DAILY_LIMIT_EXCEEDEDمحدودیت روزانه ارسال ایمیل از حد مجاز فراتر رفته است
WARMUP_LIMIT_EXCEEDEDسقف روزانهٔ دورهٔ راه‌اندازی ارسال حساب شما پر شده است؛ در ۰۰:۰۰ UTC بازنشانی می‌شود (ببینید گرم‌کردن IP)
PAYMENT_DAILY_LIMIT_EXCEEDEDمحدودیت روزانه برای حساب دارای پرداخت معوق اعمال شده است

ظرفیت پلتفرم (429)

این ردها یعنی اکنون خودِ پلتفرم، و نه سهمیهٔ حساب شما، ارسال‌های جدید را محدود می‌کند. هرکدام 429 با هدر Retry-After است، چیزی در صف قرار نگرفته و ارسال مجدد همان درخواست امن است. در SMTP همین ردها به‌صورت 421 Try again later: <message> (موقت) برمی‌گردند. message همان متن انگلیسیِ برگردانده‌شده توسط API است.

کدmessage (همان‌طور که برمی‌گردد)زمان تلاش مجدد
WARMUP_POOL_BUDGET_EXCEEDED"Sending is temporarily paused for today. It resumes automatically at 00:00 UTC; no action is needed."پس از Retry-After (۰۰:۰۰ UTC بعدی)
WARMUP_POOL_BUDGET_EXCEEDED"Sending is briefly delayed. Please retry in a few minutes." (همان کد، وقتی ظرفیت پلتفرم لحظه‌ای قابل راستی‌آزمایی نیست)پس از Retry-After کوتاه
WARMUP_POOL_EMPTY"Sending is temporarily paused. It resumes automatically; no action is needed."پس از Retry-After؛ نیازی به اقدام نیست
PLATFORM_DAILY_CAPACITY_REACHED"Platform sending capacity for today is fully booked. This is a temporary platform-wide limit, not your account quota, and it resets at midnight UTC."پس از Retry-After (۰۰:۰۰ UTC بعدی)
PLATFORM_CAPACITY_PROTECTION"New sending is briefly paused to protect platform capacity. Mail already accepted is not affected. This is transient and clears on its own; retry shortly."پس از Retry-After کوتاه
PROBATION_CAP_REACHED"New accounts can send to N recipients per rolling 24 hours until our team has reviewed the account. Capacity returns as earlier sends age out of the 24-hour window; contact support to request a review." (یا «…cannot be verified right now, so sending is briefly paused…» برای قطعی لحظه‌ای)پس از Retry-After، یا درخواست بررسی از پشتیبانی

ایمیل‌هایی که پیش‌تر پذیرفته شده‌اند هرگز تحت‌تأثیر این ردها قرار نمی‌گیرند. با آن‌ها مثل هر 429 دیگری رفتار کنید: عقب‌نشینی کنید، Retry-After را رعایت کنید و دوباره تلاش کنید. چیزی برای پیکربندی یا ارتقا وجود ندارد.

محدودیت‌های جریان

transactional_recipient_limit_exceeded و marketing_recipient_limit_exceeded هر دو 400 هستند، نه 429: به بخش اعتبارسنجی درخواست در بالا مراجعه کنید. BATCH_NOT_ALLOWED_FOR_TRANSACTIONAL نیز 400 است: ارسال دسته‌ای صرف‌نظر از محدودیت‌های نرخ روی یک اعتبارنامهٔ تراکنشی مجاز نیست.

سهمیه و صورتحساب

کدتوضیحات
QUOTA_EXCEEDEDسهمیه مصرف برای دوره صورتحساب جاری از حد مجاز فراتر رفته است

موتور سیاست‌گذاری

کدتوضیحات
SENDING_BLOCKEDموتور سیاست نرخ/گرم‌سازی این ارسال را مسدود کرده است: سطح تأیید، فهرست مجاز سندباکس، محدودیت حساب، یا افزایش غیرعادی در حجم ارسال
MARKETING_PAUSEDایمیل‌های بازاریابی برای این فضای کاری متوقف شده‌اند

خطاهای سرور (5xx)

کدوضعیت HTTPتوضیحات
INTERNAL_ERROR500خطای داخلی غیرمنتظره سرور
AUTHENTICATION_FAILED500اعتبارسنجی کلید API به‌صورت داخلی ناموفق بود (نه یک ورود نادرست، دوباره تلاش کنید)
TIMEOUT504عملیات با وقفه زمانی مواجه شد
SERVICE_UNAVAILABLE503سرویس به‌طور موقت در دسترس نیست
DATABASE_ERROR503خطای پایگاه داده رخ داده است

خطاهای سرور (5xx) موقتی هستند. درخواست را با تأخیر نمایی مجدداً ارسال کنید. در صورت تداوم خطا، صفحه وضعیت MailLand را بررسی کنید یا با پشتیبانی تماس بگیرید.

مدیریت خطاها

استراتژی تلاش مجدد

وضعیت HTTPتلاش مجدد؟استراتژی
400خیردرخواست را اصلاح کرده و دوباره تلاش کنید
401خیراعتبارنامه‌ها را بررسی کنید یا توکن خود را تازه‌سازی کنید
403خیرمجوزها را بررسی کنید یا پلن خود را ارتقا دهید
404خیرشناسه منبع را بررسی کنید
409خیرتداخل را رفع کنید
422خیرمشکل منطق کسب‌وکار را رفع کنید (مانند تأیید دامنه)
429بلهبه مدت Retry-After صبر کنید، سپس دوباره تلاش کنید
500بلهبا تأخیر نمایی دوباره تلاش کنید (حداکثر 3 بار)
503بلهبا تأخیر نمایی دوباره تلاش کنید (حداکثر 5 بار)

خواندن هدرهای محدودیت نرخ

بیشتر پاسخ‌ها شامل X-RateLimit-Limit و X-RateLimit-Remaining هستند:

هدرتوضیحات
X-RateLimit-Limitحداکثر درخواست‌های مجاز در پنجره زمانی جاری
X-RateLimit-Remainingدرخواست‌های باقی‌مانده در پنجره زمانی جاری

یک 429 مبتنی بر IP علاوه بر این موارد را نیز دارد:

هدرتوضیحات
X-RateLimit-Resetمُهر زمانی UTC به‌صورت ISO-8601 برای بازنشانی پنجره زمانی جاری (فقط در پاسخ‌های محدودیت نرخ IP)
Retry-Afterثانیه‌های انتظار قبل از تلاش مجدد

مراحل بعدی

در این صفحه