Deweloperzy

API v2

Jeden endpoint, tylko POST, odpowiedź JSON. Ten sam katalog i te same ceny co w panelu, z twojej strony, bota lub arkusza.

Cztery rzeczy, które warto wiedzieć na start

01

Twój klucz to twój portfel

Wygeneruj go na stronie konta. Autoryzuje wydatki, więc jego miejsce jest w konfiguracji serwera. Wymień go, jeśli kiedykolwiek trafił do przeglądarki, czatu lub na zrzut ekranu.

02

Limity są dla każdej usługi osobno

Ilość minimalna i maksymalna są ustawiane indywidualnie — jedna usługa zaczyna się od 10 sztuk, następna od 500 000. Odczytaj je z services i sprawdź przed wysłaniem zamówienia.

03

Zamówienia pobierają ze salda

Nie ma etapu faktury. add udaje się tylko dopóki saldo pokrywa zamówienie, więc odpytuj balance i zatrzymaj kolejkę, zanim spadnie do zera.

04

Masz już panel? Bez kodu

PerfectPanel i większość skryptów panelowych czyta ten format natywnie. W swoim adminie wejdź w Providers → Add provider i wklej adres witryny — https://autosmo.com/, tylko to, nie endpoint. Dodaj swój klucz, zsynchronizuj katalog, ustaw swoją marżę.

Jedno żądanie, od początku do końca

rozwiązany przykład
złóż zamówienie i odczytaj je z powrotem
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"}

Usługa 6758 to prawdziwe id z katalogu. Ilości poniżej minimum usługi są odrzucane, a nie zaokrąglane w górę.

Przekaż to agentowi

kopiuj & wklej

Wklej to do ChatGPT, Claude lub Cursor, podaj swój język, a otrzymasz działającego klienta. Niesie pełną listę wywołań plus zachowanie, w którym łatwo o pomyłkę.

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

Lista kontrolna przed wejściem na produkcję

Klucza nie ma w niczym, co klient może otworzyć

Ani w JavaScripcie front-endu, ani w bundlu mobilnym, ani w publicznym repozytorium. Każdy, kto go ma, może składać zamówienia na twoje saldo.

Przekroczenia czasu są kolejkowane dla człowieka, a nie ponawiane

Ponieważ add nie ma klucza idempotentności, automatyczne ponowienie to sposób, w jaki jedno zamówienie klienta staje się dwoma opłaconymi.

Twoja kopia katalogu odświeża się według harmonogramu

Stawki, limity i dostępność zmieniają się, gdy dostawcy zmieniają swoje. Nieaktualna kopia lokalna sprzedaje po cenach, których już nie masz.

Zamówienia częściowe docierają do klienta jako częściowe

Zmapuj remains do własnej logiki zwrotów. Oznaczenie częściowej dostawy jako ukończonej to najszybszy sposób na zarobienie chargebacku.

Prześledziłeś jedno prawdziwe zamówienie od początku do końca

Złóż najmniejsze zamówienie, na jakie pozwala katalog, odpytuj je aż do ukończenia i potwierdź, że twoja strona zgadza się z charge co do grosza, zanim przełączysz ruch.

Pełna dokumentacja, wygenerowana przez panel

API

Metoda HTTP POST
URL API https://autosmo.com/api/v2
Format odpowiedzi JSON

Service list

Parameters Description
key Your API key
action services

Przykładowa odpowiedź

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

Przykładowa odpowiedź

{
    "order": 23501
}

Order status

Parameters Description
key Your API key
action status
order Order ID

Przykładowa odpowiedź

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

Przykładowa odpowiedź

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

Przykładowa odpowiedź

{
    "refill": "1"
}

Create multiple refill

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

Przykładowa odpowiedź

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

Przykładowa odpowiedź

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

Przykładowa odpowiedź

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

Przykładowa odpowiedź

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

User balance

Parameters Description
key Your API key
action balance

Przykładowa odpowiedź

{
    "balance": "100.84292",
    "currency": "USD"
}
Przykład kodu PHP