Geliştiriciler

API v2

Tek endpoint, yalnızca POST, JSON yanıt. Panelde gördüğün aynı katalog ve fiyatlar; kendi siten, botun veya tablondan.

Önce bilinmesi gereken dört şey

01

Anahtarınız cüzdanınızdır

Onu hesap sayfası üzerinde oluşturun. Harcamayı yetkilendirir, bu yüzden yeri sunucu yapılandırmasıdır. Bir tarayıcıya, bir sohbete ya da bir ekran görüntüsüne değdiyse onu yenileyin.

02

Limitler hizmete göredir

Asgari ve azami miktar ayrı ayrı belirlenir — bir hizmet 10 birimden, diğeri 500 000'den başlar. Bunları services'ten okuyun ve sipariş göndermeden önce doğrulayın.

03

Siparişler bakiyeden harcar

Fatura adımı yoktur. add yalnızca bakiye siparişi karşıladığı sürece başarılı olur; bu yüzden balance'ı sorgulayın ve sıfıra ulaşmadan önce kuyruğunuzu durdurun.

04

Zaten paneliniz var mı? Kod gerekmez

PerfectPanel ve çoğu panel betiği bu biçimi doğrudan okur. Yönetim panelinizde Providers → Add provider'a gidin ve site adresini yapıştırın — https://autosmo.com/, sadece o, endpoint değil. Anahtarınızı ekleyin, kataloğu senkronize edin, kâr marjınızı belirleyin.

Baştan sona tek bir istek

işlenmiş örnek
sipariş verin ve geri okuyun
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 hizmeti katalogdan gerçek bir id'dir. Bir hizmetin asgarisinin altındaki miktarlar reddedilir, yukarı yuvarlanmaz.

Bir ajana devredin

kopyala & yapıştır

Bunu ChatGPT, Claude veya Cursor'a yapıştırın, dilinizi belirtin ve çalışan bir istemci elde edin. Tam çağrı listesini ve kolayca yanlış yapılan davranışı içinde taşır.

entegrasyon istemi
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.

Yayına almadan önce kontrol listesi

Anahtar, bir müşterinin açabileceği hiçbir şeyde değil

Ön uç JavaScript'te değil, mobil pakette değil, herkese açık bir depoda değil. Onu elinde tutan herkes bakiyenizden sipariş verebilir.

Zaman aşımları bir insana kuyruğa alınır, yeniden denenmez

add'de bir idempotency anahtarı olmadığından, otomatik bir yeniden deneme bir müşteri siparişinin nasıl iki ücretli siparişe dönüştüğüdür.

Katalog kopyanız bir zamanlamaya göre yenilenir

Tedarikçiler kendilerinkini değiştirince fiyatlar, limitler ve kullanılabilirlik değişir. Eskimiş bir yerel kopya, artık sizde olmayan fiyatlardan satış yapar.

Kısmi siparişler müşterinize kısmi olarak ulaşır

remains'i kendi iade mantığınıza bağlayın. Kısmi bir teslimatı tamamlandı olarak işaretlemek, bir ters ibraz kazanmanın en hızlı yoludur.

Gerçek bir siparişi baştan sona izlediniz

Kataloğun izin verdiği en küçük siparişi verin, tamamlanana kadar sorgulayın ve trafiği aktarmadan önce kendi tarafınızın charge ile kuruşuna kadar örtüştüğünü doğrulayın.

Panel tarafından üretilen tam başvuru

API

HTTP Yöntemi POST
API URL'si https://autosmo.com/api/v2
Yanıt biçimi JSON

Service list

Parameters Description
key Your API key
action services

Örnek yanıt

[
    {
        "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

Örnek yanıt

{
    "order": 23501
}

Order status

Parameters Description
key Your API key
action status
order Order ID

Örnek yanıt

{
    "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)

Örnek yanıt

{
    "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

Örnek yanıt

{
    "refill": "1"
}

Create multiple refill

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

Örnek yanıt

[
    {
        "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

Örnek yanıt

{
    "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)

Örnek yanıt

[
    {
        "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)

Örnek yanıt

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

User balance

Parameters Description
key Your API key
action balance

Örnek yanıt

{
    "balance": "100.84292",
    "currency": "USD"
}
PHP kodu örneği