ڈیویلپرز

API v2

ایک اینڈ پوائنٹ، صرف POST، جواب JSON میں۔ وہی کیٹلاگ اور وہی قیمتیں جو پینل پر ہیں — آپ کی اپنی سائٹ، بوٹ یا اسپریڈ شیٹ سے۔

چار باتیں جو پہلے جاننی چاہئیں

01

آپ کی کلید ہی آپ کا بٹوا ہے

اسے اکاؤنٹ پیج میں بنائیں۔ یہ خرچ کرنے کی اجازت دیتی ہے، اس لیے اس کی جگہ سرور کی کنفیگ میں ہے۔ اگر ایک بار بھی براؤزر، چیٹ یا اسکرین شاٹ میں آ گئی تو اسے بدل دیں۔

02

حدیں ہر سروس کی الگ ہیں

کم از کم اور زیادہ سے زیادہ مقدار ہر سروس کی الگ ہے — ایک سروس 10 یونٹ سے شروع ہوتی ہے، اگلی 500 000 سے۔ انہیں services سے پڑھیں اور آرڈر بھیجنے سے پہلے چیک کریں۔

03

آرڈر بیلنس سے خرچ کرتے ہیں

بلنگ کا کوئی مرحلہ نہیں۔ add تبھی کامیاب ہوتا ہے جب بیلنس آرڈر کو پورا کرے، اس لیے balance کو poll کریں اور صفر تک پہنچنے سے پہلے اپنی قطار روک دیں۔

04

پہلے سے پینل ہے؟ کوڈ کی ضرورت نہیں

PerfectPanel اور زیادہ تر پینل اسکرپٹس یہ فارمیٹ خود سمجھتے ہیں۔ اپنے ایڈمن میں Providers → Add provider کھولیں اور سائٹ کا ایڈریس پیسٹ کریں — https://autosmo.com/، بس اتنا، اینڈ پوائنٹ نہیں۔ اپنی کلید ڈالیں، کیٹلاگ سِنک کریں، اپنا مارجن طے کریں۔

ایک درخواست، شروع سے آخر تک

حل شدہ مثال
آرڈر دیں اور اسے واپس پڑھیں
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 سے ملتا ہے۔

مکمل ریفرنس، پینل کا تیار کردہ

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 کوڈ کی مثال