المطوّرون

API v2

نقطة نهاية واحدة، POST فقط، والرد JSON. نفس الكتالوج ونفس الأسعار التي تراها في اللوحة، من موقعك أو بوتك أو جدولك.

أربعة أمور يجب معرفتها أولاً

01

مفتاحك هو محفظتك

أنشئه على صفحة الحساب. إنه يصرّح بالإنفاق، لذا مكانه في إعدادات الخادم. بدّله إذا لامس يوماً متصفحاً أو محادثة أو لقطة شاشة.

02

الحدود لكل خدمة على حدة

تُحدَّد الكمية الدنيا والقصوى بشكل فردي — خدمة تبدأ من 10 وحدات، والتالية من 500 000. اقرأها من services وتحقق منها قبل إرسال طلب.

03

الطلبات تُنفق من الرصيد

لا توجد خطوة فاتورة. add ينجح فقط ما دام الرصيد يغطي الطلب، لذا استعلم عن balance وأوقف طابورك قبل أن يصل إلى الصفر.

04

لديك لوحة بالفعل؟ لا حاجة لأي كود

تقرأ PerfectPanel ومعظم سكربتات اللوحات هذا التنسيق أصلاً. في لوحة الإدارة اذهب إلى Providers → Add provider والصق عنوان الموقعhttps://autosmo.com/، هذا فقط، وليس endpoint. أضف مفتاحك، وزامن الكتالوج، وحدد هامش ربحك.

طلب واحد من البداية إلى النهاية

مثال محلول
قدّم طلباً واقرأه مرة أخرى
curl -X POST https://autosmo.com/api/v2 \\
  -d key=YOUR_KEY \\
  -d action=add \\
  -d service=6758 \\
  -d link=https://instagram.com/yourprofile \\
  -d quantity=100

{"order": 8231455}

curl -X POST https://autosmo.com/api/v2 -d key=YOUR_KEY -d action=status -d order=8231455

{"charge": "0.016", "start_count": "2841", "status": "Completed",
 "remains": "0", "currency": "USD"}

الخدمة 6758 هي id حقيقي من الكتالوج. الكميات الأقل من الحد الأدنى للخدمة تُرفض ولا تُقرَّب للأعلى.

سلّمه إلى وكيل

نسخ & لصق

الصق هذا في ChatGPT أو Claude أو Cursor، وحدّد لغتك، فتحصل على عميل يعمل. يحمل قائمة الاستدعاءات الكاملة إضافة إلى السلوك الذي يسهل الخطأ فيه.

موجّه التكامل
Build me a client for the AutoSMO SMM API (v2), in a language I will name.

ENDPOINT
POST https://autosmo.com/api/v2 — form-encoded body, JSON response, no other verbs.
Authentication is the field `key`, sent with every call. Server-side only.

CALLS
action=services -> array of { service, name, type, category, rate (per 1000),
                              min, max, refill:bool, cancel:bool }
action=add      params: service, link, quantity [, runs, interval]  -> { "order": id }
                custom comments: service, link, comments
action=status   params: order | orders (comma separated, max 100)
                -> { charge, start_count, status, remains, currency }
action=refill   params: order | orders (max 100)   -> { "refill": id }
action=refill_status  params: refill | refills     -> { "status": ... }
action=cancel   params: orders (max 100)
action=balance                                      -> { balance, currency }

BEHAVIOUR THAT COSTS MONEY IF IGNORED
- A timed-out `add` is not a failed `add`. The order may exist and be paid for.
  Surface it for a human; do not resend it on a timer.
- Quantity outside a service's own min/max is refused outright, so read those
  bounds from the catalogue and check before sending.
- Status is polled with `orders` and up to 100 ids at once. Per-order polling
  works in testing and dies in production.
- A 200 response can still contain per-entry errors when several ids were
  requested. Walk the entries; do not trust the envelope.
- "Partial" is a delivery that stopped early: `remains` is the shortfall and
  `charge` is the real cost. Pass that difference back to your buyer.
- Refill and cancel exist only where the catalogue flags say so.

WHAT I EXPECT FROM YOU
- One function per call, with the response parsed into typed structures.
- My order reference stored next to the id this API returns.
- Two background jobs: refresh the catalogue, and follow orders still open.
- A rehearsal switch that logs calls without sending them, and a single
  end-to-end test using the cheapest service in the catalogue.

قائمة تحقق قبل الإطلاق

المفتاح ليس في أي شيء يمكن للعميل فتحه

ليس في JavaScript الواجهة الأمامية، ولا في حزمة تطبيق جوال، ولا في مستودع عام. أي شخص يملكه يستطيع تقديم طلبات على حساب رصيدك.

تُوضع المهل الزمنية في طابور لإنسان، لا تُعاد المحاولة

لأن add ليس له مفتاح idempotency، فإن إعادة المحاولة التلقائية هي كيف يتحول طلب عميل واحد إلى طلبين مدفوعين.

نسختك من الكتالوج تُحدَّث وفق جدول زمني

تتغير الأسعار والحدود والتوافر عندما يغيّرها المورّدون. نسخة محلية قديمة تبيع بأسعار لم تعد لديك.

الطلبات الجزئية تصل إلى عميلك جزئية

اربط remains بمنطق استرداد الأموال الخاص بك. وسم تسليم جزئي بأنه مكتمل هو أسرع طريقة لتكسب رد مبلغ.

لقد تابعت طلباً حقيقياً واحداً من أوله إلى آخره

قدّم أصغر طلب يسمح به الكتالوج، واستعلم عنه حتى الاكتمال، وتأكد أن جانبك يطابق charge حتى آخر سنت قبل أن تحوّل حركة المرور.

مرجع كامل، مولّد بواسطة اللوحة

API

طريقة HTTP POST
عنوان API https://autosmo.com/api/v2
تنسيق الاستجابة JSON

Service list

Parameters Description
key Your API key
action services

مثال على الاستجابة

[
    {
        "service": 1,
        "name": "Followers",
        "type": "Default",
        "category": "First Category",
        "rate": "0.90",
        "min": "50",
        "max": "10000",
        "refill": true,
        "cancel": true
    },
    {
        "service": 2,
        "name": "Comments",
        "type": "Custom Comments",
        "category": "Second Category",
        "rate": "8",
        "min": "10",
        "max": "1500",
        "refill": false,
        "cancel": true
    }
]

Add order

مثال على الاستجابة

{
    "order": 23501
}

Order status

Parameters Description
key Your API key
action status
order Order ID

مثال على الاستجابة

{
    "charge": "0.27819",
    "start_count": "3572",
    "status": "Partial",
    "remains": "157",
    "currency": "USD"
}

Multiple orders status

Parameters Description
key Your API key
action status
orders Order IDs (separated by a comma, up to 100 IDs)

مثال على الاستجابة

{
    "1": {
        "charge": "0.27819",
        "start_count": "3572",
        "status": "Partial",
        "remains": "157",
        "currency": "USD"
    },
    "10": {
        "error": "Incorrect order ID"
    },
    "100": {
        "charge": "1.44219",
        "start_count": "234",
        "status": "In progress",
        "remains": "10",
        "currency": "USD"
    }
}

Create refill

Parameters Description
key Your API key
action refill
order Order ID

مثال على الاستجابة

{
    "refill": "1"
}

Create multiple refill

Parameters Description
key Your API key
action refill
orders Order IDs (separated by a comma, up to 100 IDs)

مثال على الاستجابة

[
    {
        "order": 1,
        "refill": 1
    },
    {
        "order": 2,
        "refill": 2
    },
    {
        "order": 3,
        "refill": {
            "error": "Incorrect order ID"
        }
    }
]

Get refill status

Parameters Description
key Your API key
action refill_status
refill Refill ID

مثال على الاستجابة

{
    "status": "Completed"
}

Get multiple refill status

Parameters Description
key Your API key
action refill_status
refills Refill IDs (separated by a comma, up to 100 IDs)

مثال على الاستجابة

[
    {
        "refill": 1,
        "status": "Completed"
    },
    {
        "refill": 2,
        "status": "Rejected"
    },
    {
        "refill": 3,
        "status": {
            "error": "Refill not found"
        }
    }
]

Create cancel

Parameters Description
key Your API key
action cancel
orders Order IDs (separated by a comma, up to 100 IDs)

مثال على الاستجابة

[
    {
        "order": 9,
        "cancel": {
            "error": "Incorrect order ID"
        }
    },
    {
        "order": 2,
        "cancel": 1
    }
]

User balance

Parameters Description
key Your API key
action balance

مثال على الاستجابة

{
    "balance": "100.84292",
    "currency": "USD"
}
مثال على كود PHP