Ein Endpunkt, nur POST, JSON zurück. Gleicher Katalog und gleiche Preise wie im Panel, von deiner eigenen Seite, Bot oder Tabelle.
Erzeuge ihn auf der Kontoseite. Er autorisiert Ausgaben und gehört daher in die Serverkonfiguration. Wechsle ihn, sobald er je in einen Browser, einen Chat oder einen Screenshot geraten ist.
Mindest- und Höchstmenge werden einzeln festgelegt — ein Dienst startet bei 10 Einheiten, der nächste bei 500 000. Lies sie aus services und prüfe sie, bevor du eine Bestellung sendest.
Es gibt keinen Rechnungsschritt. add gelingt nur, solange das Guthaben die Bestellung deckt; frage also balance ab und stoppe deine Warteschlange, bevor es null erreicht.
PerfectPanel und die meisten Panel-Skripte lesen dieses Format nativ. Gehe in deinem Admin zu Providers → Add provider und füge die Website-Adresse ein — https://autosmo.com/, nur die, nicht den Endpoint. Füge deinen Schlüssel hinzu, synchronisiere den Katalog, lege deinen Aufschlag fest.
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"}
Dienst 6758 ist eine echte id aus dem Katalog. Mengen unter dem Minimum eines Dienstes werden abgelehnt, nicht aufgerundet.
Füge dies in ChatGPT, Claude oder Cursor ein, nenne deine Sprache, und du erhältst einen funktionierenden Client. Er enthält die vollständige Aufrufliste plus das Verhalten, bei dem man leicht Fehler macht.
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.
Nicht im Frontend-JavaScript, nicht in einem Mobile-Bundle, nicht in einem öffentlichen Repository. Wer ihn besitzt, kann Bestellungen zulasten deines Guthabens aufgeben.
Da add keinen Idempotenzschlüssel hat, wird aus einer Kundenbestellung durch einen automatischen Wiederholversuch zwei bezahlte Bestellungen.
Preise, Limits und Verfügbarkeit ändern sich, wenn die Anbieter ihre ändern. Eine veraltete lokale Kopie verkauft zu Preisen, die du nicht mehr hast.
Bilde remains in deine eigene Rückerstattungslogik ab. Eine Teillieferung als abgeschlossen zu markieren ist der schnellste Weg zu einer Rückbuchung.
Gib die kleinste Bestellung auf, die der Katalog erlaubt, frage sie bis zum Abschluss ab und bestätige, dass deine Seite auf den Cent mit charge übereinstimmt, bevor du den Traffic umleitest.
| HTTP-Methode | POST |
| API-URL | https://autosmo.com/api/v2 |
| Antwortformat | JSON |
| Parameters | Description |
|---|---|
| key | Your API key |
| action | services |
Beispielantwort
[
{
"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
}
]
Beispielantwort
{
"order": 23501
}
| Parameters | Description |
|---|---|
| key | Your API key |
| action | status |
| order | Order ID |
Beispielantwort
{
"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) |
Beispielantwort
{
"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 |
Beispielantwort
{
"refill": "1"
}
| Parameters | Description |
|---|---|
| key | Your API key |
| action | refill |
| orders | Order IDs (separated by a comma, up to 100 IDs) |
Beispielantwort
[
{
"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 |
Beispielantwort
{
"status": "Completed"
}
| Parameters | Description |
|---|---|
| key | Your API key |
| action | refill_status |
| refills | Refill IDs (separated by a comma, up to 100 IDs) |
Beispielantwort
[
{
"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) |
Beispielantwort
[
{
"order": 9,
"cancel": {
"error": "Incorrect order ID"
}
},
{
"order": 2,
"cancel": 1
}
]
| Parameters | Description |
|---|---|
| key | Your API key |
| action | balance |
Beispielantwort
{
"balance": "100.84292",
"currency": "USD"
}
Beispiel für PHP-Code