Tek endpoint, yalnızca POST, JSON yanıt. Panelde gördüğün aynı katalog ve fiyatlar; kendi siten, botun veya tablondan.
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.
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.
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.
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.
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.
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.
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.
Ön uç JavaScript'te değil, mobil pakette değil, herkese açık bir depoda değil. Onu elinde tutan herkes bakiyenizden sipariş verebilir.
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.
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.
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.
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.
| HTTP Yöntemi | POST |
| API URL'si | https://autosmo.com/api/v2 |
| Yanıt biçimi | JSON |
| 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
}
]
Örnek yanıt
{
"order": 23501
}
| 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"
}
| 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"
}
}
| Parameters | Description |
|---|---|
| key | Your API key |
| action | refill |
| order | Order ID |
Örnek yanıt
{
"refill": "1"
}
| 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"
}
}
]
| Parameters | Description |
|---|---|
| key | Your API key |
| action | refill_status |
| refill | Refill ID |
Örnek yanıt
{
"status": "Completed"
}
| 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"
}
}
]
| 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
}
]
| Parameters | Description |
|---|---|
| key | Your API key |
| action | balance |
Örnek yanıt
{
"balance": "100.84292",
"currency": "USD"
}
PHP kodu örneği