یک اندپوینت، فقط POST، پاسخ JSON. همان کاتالوگ و همان قیمتهای پنل، از سایت، بات یا صفحهگستردهی خودتان.
آن را در صفحه حساب بسازید. خرج کردن را مجاز میکند، پس جایش در پیکربندی سرور است. اگر حتی یک بار به مرورگر، گفتوگو یا اسکرینشات رسید، آن را عوض کنید.
حداقل و حداکثر تعداد جداگانه تعیین میشود — یک سرویس از 10 واحد شروع میشود، سرویس بعدی از 500 000. آنها را از services بخوانید و پیش از فرستادن سفارش اعتبارسنجی کنید.
مرحله صورتحساب وجود ندارد. add تنها تا زمانی موفق میشود که موجودی سفارش را پوشش دهد، پس balance را poll کنید و صف خود را پیش از رسیدن به صفر متوقف کنید.
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 را به منطق بازپرداخت خودتان نگاشت کنید. علامتزدن یک تحویل ناقص بهعنوان کامل، سریعترین راه برای دریافت یک chargeback است.
کوچکترین سفارشی را که کاتالوگ اجازه میدهد ثبت کنید، تا تکمیل آن poll کنید، و پیش از جابهجایی ترافیک تأیید کنید که سمت شما تا آخرین سنت با charge میخواند.
| متد HTTP | POST |
| نشانی API | https://autosmo.com/api/v2 |
| قالب پاسخ | JSON |
| 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
}
]
نمونه پاسخ
{
"order": 23501
}
| Parameters | Description |
|---|---|
| key | Your API key |
| action | status |
| order | Order ID |
نمونه پاسخ
{
"charge": "0.27819",
"start_count": "3572",
"status": "Partial",
"remains": "157",
"currency": "USD"
}
| 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"
}
}
| Parameters | Description |
|---|---|
| key | Your API key |
| action | refill |
| order | Order ID |
نمونه پاسخ
{
"refill": "1"
}
| 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"
}
}
]
| Parameters | Description |
|---|---|
| key | Your API key |
| action | refill_status |
| refill | Refill ID |
نمونه پاسخ
{
"status": "Completed"
}
| 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"
}
}
]
| 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
}
]
| Parameters | Description |
|---|---|
| key | Your API key |
| action | balance |
نمونه پاسخ
{
"balance": "100.84292",
"currency": "USD"
}
نمونه کد PHP