Dezvoltatori

API v2

Un singur endpoint, doar POST, răspuns JSON. Același catalog și aceleași prețuri din panou, din propriul site, bot sau foaie de calcul.

Patru lucruri de știut de la început

01

Cheia ta este portofelul tău

Generează-o pe pagina contului. Autorizează cheltuielile, așa că locul ei este în configurația serverului. Schimb-o dacă a ajuns vreodată într-un browser, într-un chat sau într-o captură de ecran.

02

Limitele sunt pentru fiecare serviciu

Cantitatea minimă și maximă se stabilesc individual — un serviciu începe de la 10 unități, următorul de la 500 000. Citește-le din services și validează înainte de a trimite o comandă.

03

Comenzile consumă soldul

Nu există un pas de factură. add reușește doar cât timp soldul acoperă comanda, așa că interoghează balance și oprește-ți coada înainte să ajungă la zero.

04

Ai deja un panel? Fără cod

PerfectPanel și majoritatea scripturilor de panel citesc nativ acest format. În adminul tău mergi la Providers → Add provider și lipește adresa site-uluihttps://autosmo.com/, doar atât, nu endpoint-ul. Adaugă-ți cheia, sincronizează catalogul, stabilește-ți adaosul.

O singură cerere, de la început până la sfârșit

exemplu rezolvat
plasează o comandă și citește-o înapoi
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"}

Serviciul 6758 este un id real din catalog. Cantitățile sub minimul unui serviciu sunt respinse, nu rotunjite în sus.

Predă-l unui agent

copiază & lipește

Lipește asta în ChatGPT, Claude sau Cursor, numește-ți limbajul și obții un client funcțional. Poartă lista completă de apeluri plus comportamentul în care e ușor să greșești.

prompt de integrare
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.

Listă de verificare înainte de lansare

Cheia nu se află în nimic ce poate deschide un client

Nu în JavaScript-ul de front-end, nu într-un pachet mobil, nu într-un depozit public. Oricine o deține poate plasa comenzi pe soldul tău.

Timeout-urile se pun la coadă pentru un om, nu se reîncearcă

Fiindcă add nu are cheie de idempotență, o reîncercare automată este modul în care o comandă a unui client devine două comenzi plătite.

Copia ta a catalogului se reîmprospătează după un program

Tarifele, limitele și disponibilitatea se schimbă când furnizorii le schimbă pe ale lor. O copie locală învechită vinde la prețuri pe care nu le mai ai.

Comenzile parțiale ajung la clientul tău ca parțiale

Mapează remains în propria ta logică de rambursare. A marca o livrare parțială drept completă este cea mai rapidă cale de a-ți atrage un chargeback.

Ai urmărit o comandă reală de la cap la coadă

Plasează cea mai mică comandă permisă de catalog, interoghează-o până la finalizare și confirmă că partea ta corespunde cu charge la bănuț înainte de a comuta traficul.

Referință completă, generată de panel

API

Metodă HTTP POST
URL-ul API https://autosmo.com/api/v2
Format răspuns JSON

Service list

Parameters Description
key Your API key
action services

Exemplu de răspuns

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

Exemplu de răspuns

{
    "order": 23501
}

Order status

Parameters Description
key Your API key
action status
order Order ID

Exemplu de răspuns

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

Exemplu de răspuns

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

Exemplu de răspuns

{
    "refill": "1"
}

Create multiple refill

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

Exemplu de răspuns

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

Exemplu de răspuns

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

Exemplu de răspuns

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

Exemplu de răspuns

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

User balance

Parameters Description
key Your API key
action balance

Exemplu de răspuns

{
    "balance": "100.84292",
    "currency": "USD"
}
Exemplu de cod PHP