// REST API

مستندات REST API

اندپوینت‌های ابزار از GET استفاده می‌کنند و JSON به شکل ⁦{ "status": "success", "data": … }⁩ برمی‌گردانند. احراز هویت با پارامتر ⁦?api_key=⁩ از صفحه «مستندات API» پس از ورود به حساب انجام می‌شود.

اندپوینت‌ها

آدرس پایه: https://mailsmmo.com

GET/api/v1/services

سرویس‌ها — قیمت و موجودی

بدون ⁦?service=⁩ کل فهرست را برمی‌گرداند. با ⁦?service=⁩ قیمت و موجودی یک سرویس را برمی‌گرداند. نیازی به API key نیست.

بدون احراز هویت

  • service (اختیاری) — برای کل فهرست خالی بگذارید؛ یک کد، یک سرویس را برمی‌گرداند (کدهای ساده مثل facebook هم پذیرفته می‌شوند)

موفق

{ "status": "success", "data": { "services": [
    { "code": "otp_gmail_facebook", "name": "Facebook", "price": 5000, "stock": 42 }
  ] } }

GET/api/v1/me

اطلاعات حساب

شناسه، ایمیل و موجودی API key فراخوان.

نیاز به API key

موفق

{ "status": "success", "data": { "id": "b7e5...-uuid", "email": "demo@mailsmmo.com", "balance": 1000000, "created_at": "2026-01-15T08:30:00Z" } }

GET/api/v1/orders

ثبت سفارش

یک endpoint برای هر دو: کد Gmail OTP (otp_gmail_*) یک صندوق ایمیل OTP صادر می‌کند؛ کد محصول موجودی (hotmail_*…) بر اساس تعداد می‌خرد. هزینه با قیمت اعلام‌شده از موجودی کسر می‌شود.

نیاز به API key

  • service — کد سرویس OTP (otp_gmail_*) یا کد محصول موجودی (مثلاً hotmail_imap_12m_36m)
  • quantity (اختیاری) — فقط برای ایمیل‌های تکی فروخته‌شده — تعداد (پیش‌فرض 1)
  • unique_key (اختیاری) — UUID ساخته‌شده توسط خودتان — ارسال مجدد، سفارش یا هزینه دوباره ایجاد نمی‌کند

موفق

{ "status": "success", "data": {
    "id": "b7e5a1c2-3d4e-4f60-8a91-2c3d4e5f6a7b", "email": "zurhansuzu@gmail.com",
    "service": "otp_gmail_facebook", "amount": 5000
  } }

GET/api/v1/orders/otp

دریافت OTP بر اساس سفارش

OTP یک سفارش را می‌خواند. نیازی به API key نیست — کد سفارش (order_id) همان کلید دسترسی است.

بدون احراز هویت

  • order_id — کد سفارش (هنگام ثبت سفارش برگردانده می‌شود)
  • unique_key (اختیاری) — یک UUID تازه ساخته‌شده توسط خودتان برای هر فراخوانی
  • from (اختیاری) — ثانیه Unix — اگر کد جدیدتری وجود نداشته باشد، otp/received_at حذف می‌شوند

موفق

{ "status": "success", "data": {
    "otp": "481253", "amount": 5000, "received_at": 1732000000,
    "from": "security@facebookmail.com", "otp_history": [
      { "value": "481253", "received_at": 1732000000 }
    ] } }

GET/api/v1/otp/orders

فهرست سفارش‌های OTP

سفارش‌های اجاره‌شده Gmail OTP، صفحه‌بندی‌شده، همراه با آخرین OTP هر سفارش.

نیاز به API key

  • page (اختیاری) — صفحه (پیش‌فرض 1)
  • page_size (اختیاری) — تعداد ردیف در هر صفحه (پیش‌فرض 20، حداکثر 200)

موفق

{ "status": "success", "data": { "orders": [
    { "id": "b7e5a1c2-3d4e-4f60-8a91-2c3d4e5f6a7b", "email": "...", "service": "otp_gmail_facebook",
      "latest_otp": "481253", "latest_link": null }
  ], "page": 1, "page_size": 20, "total": 137 } }

GET/api/v1/mail

خواندن همه پیام‌ها

همه پیام‌های یک صندوق ایمیل، همراه با OTP/لینک استخراج‌شده.

نیاز به API key

  • order_id — کد سفارش

موفق

{ "status": "success", "data": { "count": 1, "messages": [
    { "id": 88, "from": "...", "subject": "...", "otp": "481253", "received_at": "..." }
  ] } }

کدهای خطای رایج

{ "status": "error", "message": "out_of_stock", "retryable": true }
  • unauthorized — API key نامعتبر است یا ارسال نشده (HTTP 401)
  • invalid_request — پارامترهای درخواست نامعتبر است (HTTP 400)
  • not_found — سرویس، سفارش یا endpoint پیدا نشد (HTTP 404)
  • insufficient_balance — موجودی کافی نیست (HTTP 402)
  • out_of_stock — ناموجود (HTTP 409) — Gmail OTP: retryable، چند ثانیه بعد دوباره تلاش کنید؛ ایمیل فروش قطعی: منتظر شارژ مجدد موجودی بمانید
  • service_unavailable — سرور اکنون نتوانست سفارش را کامل کند — با همان unique_key دوباره تلاش کنید (HTTP 503, retryable)
  • in_progress — سفارش در حال نهایی شدن است یا ممکن است از قبل نزد تأمین‌کننده وجود داشته باشد — با همان unique_key دوباره تلاش کنید (HTTP 409, retryable)
  • forbidden — اجازه دسترسی به این منبع وجود ندارد (HTTP 403)
  • idempotency_mismatch — این unique_key برای درخواست دیگری استفاده شده — از یک unique_key جدید استفاده کنید (HTTP 422)
  • order_cancelled — سفارش پیش از کسر هزینه آزاد شد، هزینه‌ای کسر نشد — دوباره تلاش کنید (HTTP 409, retryable)
  • too_many_requests — درخواست‌ها بیش از حد است — صبر کنید و دوباره تلاش کنید (HTTP 429, retryable)
  • auth_unavailable — اکنون امکان بررسی API key نیست، کلید سالم است — دوباره تلاش کنید (HTTP 503, retryable)
  • shutting_down — سرور در حال راه‌اندازی مجدد است — چند ثانیه بعد دوباره تلاش کنید (HTTP 503, retryable)
  • payload_too_large — بدنه درخواست بیش از حد بزرگ است (HTTP 413)
  • internal_server_error — خطای سرور، لطفاً بعداً دوباره تلاش کنید (HTTP 500)

مستندات برای هوش مصنوعی و ابزارها

مستندات کامل به‌صورت Markdown در ⁦https://mailsmmo.com/llms.txt⁩ قرار دارد — آن را در Cursor، Claude یا ChatGPT بچسبانید تا کد یکپارچه‌سازی تولید شود.

تلاش مجدد امن با unique_key

با هر سفارش یک unique_key (یک UUID که خودتان می‌سازید) بفرستید. اگر اتصال قطع شد، با همان unique_key دوباره تلاش کنید: همان سفارش را پس می‌گیرید، بدون سفارش جدید و بدون کسر دوباره.

قالب خطا

در صورت خطا، پاسخ فقط شامل status، message (یک کد خطا با قالب snake_case) و retryable است که نشان می‌دهد آیا باید دوباره تلاش کنید یا نه.

با MailSMMO شروع کنید

رایگان ثبت‌نام کنید، کیف پولتان را شارژ کنید و در چند دقیقه اولین ایمیلتان را اجاره کنید.

ساخت حساب →