Pengembang

API v2

Satu endpoint, hanya POST, balasan JSON. Katalog dan harga yang sama seperti di panel, dari situs, bot, atau spreadsheet-mu.

Empat hal yang perlu diketahui lebih dulu

01

Kunci Anda adalah dompet Anda

Buat di halaman akun. Kunci ini mengotorisasi pengeluaran, jadi tempatnya di konfigurasi server. Ganti jika pernah menyentuh browser, obrolan, atau tangkapan layar.

02

Batas berlaku per layanan

Jumlah minimum dan maksimum ditetapkan secara individual — satu layanan mulai dari 10 unit, yang berikutnya dari 500 000. Baca dari services dan validasi sebelum mengirim pesanan.

03

Pesanan menghabiskan saldo

Tidak ada langkah faktur. add hanya berhasil selama saldo menutup pesanan, jadi polling balance dan hentikan antrean Anda sebelum mencapai nol.

04

Sudah punya panel? Tanpa kode

PerfectPanel dan sebagian besar skrip panel membaca format ini secara native. Di admin Anda, buka Providers → Add provider dan tempel alamat situshttps://autosmo.com/, itu saja, bukan endpoint. Tambahkan kunci Anda, sinkronkan katalog, tetapkan markup Anda.

Satu permintaan, dari awal sampai akhir

contoh terperinci
buat pesanan dan baca kembali
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"}

Layanan 6758 adalah id asli dari katalog. Jumlah di bawah minimum sebuah layanan ditolak, bukan dibulatkan ke atas.

Serahkan ke sebuah agen

salin & tempel

Tempel ini ke ChatGPT, Claude, atau Cursor, sebutkan bahasa Anda, dan Anda mendapat klien yang berfungsi. Ia membawa daftar panggilan lengkap plus perilaku yang mudah salah.

prompt integrasi
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.

Daftar periksa sebelum live

Kunci tidak ada di apa pun yang bisa dibuka pelanggan

Tidak di JavaScript front-end, tidak di bundle mobile, tidak di repositori publik. Siapa pun yang memegangnya bisa membuat pesanan atas saldo Anda.

Timeout diantrekan untuk manusia, bukan dicoba ulang

Karena add tidak punya kunci idempotensi, percobaan ulang otomatis adalah cara satu pesanan pelanggan menjadi dua pesanan berbayar.

Salinan katalog Anda menyegarkan sesuai jadwal

Tarif, batas, dan ketersediaan berubah saat pemasok mengubah milik mereka. Salinan lokal yang usang menjual dengan harga yang tak lagi Anda miliki.

Pesanan parsial sampai ke pelanggan Anda sebagai parsial

Petakan remains ke logika pengembalian dana Anda sendiri. Menandai pengiriman parsial sebagai selesai adalah cara tercepat mendapatkan chargeback.

Anda telah menyaksikan satu pesanan nyata sampai tuntas

Buat pesanan terkecil yang diizinkan katalog, polling hingga selesai, dan pastikan sisi Anda cocok dengan charge sampai ke sennya sebelum mengalihkan lalu lintas.

Referensi lengkap, dihasilkan oleh panel

API

Metode HTTP POST
URL API https://autosmo.com/api/v2
Format respons JSON

Service list

Parameters Description
key Your API key
action services

Contoh respons

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

Contoh respons

{
    "order": 23501
}

Order status

Parameters Description
key Your API key
action status
order Order ID

Contoh respons

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

Contoh respons

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

Contoh respons

{
    "refill": "1"
}

Create multiple refill

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

Contoh respons

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

Contoh respons

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

Contoh respons

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

Contoh respons

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

User balance

Parameters Description
key Your API key
action balance

Contoh respons

{
    "balance": "100.84292",
    "currency": "USD"
}
Contoh kode PHP