Dokumentacja API panelu SMM
Panel SMM z API v2: zamawiaj usługi 4SNS PLUS ze swojego bota Telegram lub własnego panelu przez standardowe API panelu SMM v2.
Czym jest API panelu SMM?
API panelu SMM pozwala programowi pobrać listę usług, składać zamówienia oraz sprawdzać status zamówień i saldo bez wchodzenia na stronę. 4SNS PLUS obsługuje standardowy format API v2 panelu SMM, z którego korzysta wiele paneli i botów, więc kod podłączony już do innego panelu działa od razu po zmianie adresu URL i klucza.
Ceny i saldo w API są takie same jak na stronie. rate w odpowiedzi services to cena za 1,000 (dolary USA) z cennika, a zamówienia złożone przez add są pobierane z salda tak samo jak zamówienia na stronie i pojawiają się w historii zamówień w Twoim panelu. Kwoty zwrócone z anulowanych lub częściowych zamówień wracają na to samo saldo.
Podstawy
| Endpoint | https://4snsplus.com/api/v2 |
| Metoda | POST |
| Format zapytania | Pola formularza (application/x-www-form-urlencoded, multipart) lub body JSON |
| Odpowiedź | JSON; błędy też przychodzą jako HTTP 200 z polem error |
| Uwierzytelnianie | Parametr key (Twój klucz API) w każdym zapytaniu |
| Limit zapytań | 300 zapytań na minutę na klucz |
| Waluta | Dolar amerykański (USD) |
Przykład zapytania
curl -X POST https://4snsplus.com/api/v2 \ -d key=YOUR_API_KEY \ -d action=balance
import requests
r = requests.post("https://4snsplus.com/api/v2", data={
"key": "YOUR_API_KEY",
"action": "add",
"service": 2210,
"link": "https://t.me/yourchannel",
"quantity": 1000,
})
print(r.json()) # {"order": 31877} or {"error": "..."}Jak zdobyć klucz API?
Gdy pierwsze doładowanie zostanie zaksięgowane na saldzie, możesz utworzyć klucz API w menu Klucz API w swoim panelu. Klucz jest pokazywany tylko raz przy tworzeniu, więc zapisz go w bezpiecznym miejscu. Utworzenie nowego klucza od razu wyłącza poprzedni.
Klucz jest oddzielony od tokenu konta. W bocie lub na serwerze umieść tylko klucz API, nigdy token konta. Jeśli podejrzewasz, że klucz wyciekł, po prostu utwórz nowy na ekranie Klucz API.
Lista usług (services)
Zwraca wszystkie usługi, które możesz zamówić. rate to cena za 1,000 (USD), a gdy type to Package, jest to cena jednego pakietu. Gdy type to Custom Comments, zamiast ilości wysyłasz listę komentarzy. category to nazwa platformy plus nazwa grupy.
| Parametr | Opis |
|---|---|
| key | Twój klucz API |
| action | services |
Przykład odpowiedzi
[
{
"service": 2210,
"name": "Members - 30 Days Non Drop - 30 Days Refill",
"type": "Default",
"category": "Telegram - Members (30 Days Non Drop)",
"rate": "1.4300",
"min": "100",
"max": "50000",
"refill": true,
"cancel": false
}
]Złóż zamówienie (add)
Składa zamówienie i pobiera kwotę z salda. Kwota to cena za 1,000 razy ilość; dla Package to cena pakietu, a dla Custom Comments ilością jest liczba linii komentarzy. Zamówienia są dostępne na kontach z zaksięgowanym pierwszym doładowaniem. order w odpowiedzi to ID Twojego zamówienia.
| Parametr | Opis |
|---|---|
| key | Twój klucz API |
| action | add |
| service | ID usługi (service z services) |
| link | Publiczny link. Dla Telegram: t.me/name, prywatny link zaproszenia t.me/+code, post t.me/name/123, bot t.me/botname. @name też jest akceptowana |
| quantity | Ilość (między min a max). Niepotrzebna dla Package i Custom Comments |
| comments | Tylko Custom Comments. Jeden komentarz w linii, do 10,000 linii, do 500 znaków w linii |
Przykład odpowiedzi
{
"order": 31877
}Status zamówienia (status)
Status jednego zamówienia. charge to faktycznie zapłacona kwota po zwrotach (USD, 6 miejsc po przecinku), start_count to licznik w chwili startu zamówienia, a remains to ilość jeszcze niedostarczona.
| Parametr | Opis |
|---|---|
| key | Twój klucz API |
| action | status |
| order | ID zamówienia |
Przykład odpowiedzi
{
"charge": "1.430000",
"start_count": "8120",
"status": "In progress",
"remains": "410",
"currency": "USD"
}Status wielu zamówień (status, orders)
Sprawdza do 100 zamówień naraz, z ID zamówień rozdzielonymi przecinkami. ID, które nie istnieją lub nie należą do Twojego konta, dostają w swoim miejscu błąd.
| Parametr | Opis |
|---|---|
| key | Twój klucz API |
| action | status |
| orders | Lista ID zamówień, na przykład 1,10,100 |
Przykład odpowiedzi
{
"1": { "charge": "0.300000", "start_count": "120", "status": "Completed", "remains": "0", "currency": "USD" },
"10": { "error": "Incorrect order ID" }
}Zgłoś uzupełnienie (refill)
Dla zamówienia usługi z okresem uzupełnienia, które zakończyło się jako Completed lub Partial, zgłoś prośbę w okresie uzupełnienia liczonym od zakończenia zamówienia. Każde zamówienie może mieć jedną otwartą prośbę, z 24 godzinami odstępu między prośbami.
| Parametr | Opis |
|---|---|
| key | Twój klucz API |
| action | refill |
| order | ID zamówienia |
Przykład odpowiedzi
{
"refill": 512
}Status uzupełnienia (refill_status)
Status jednej prośby o uzupełnienie.
| Parametr | Opis |
|---|---|
| key | Twój klucz API |
| action | refill_status |
| refill | ID uzupełnienia (refill z odpowiedzi refill) |
Przykład odpowiedzi
{
"status": "Completed"
}Saldo (balance)
Twoje saldo (USD, 6 miejsc po przecinku).
| Parametr | Opis |
|---|---|
| key | Twój klucz API |
| action | balance |
Przykład odpowiedzi
{
"balance": "84.120000",
"currency": "USD"
}Wartości statusu zamówienia
| Pending | Przyjęte. Przekazywane dalej, czeka na start albo operator sprawdza wynik przekazania |
| In progress | W trakcie realizacji |
| Completed | Dostarczone w całości |
| Partial | Dostarczone częściowo. Niedostarczona część wraca na saldo |
| Canceled | Niedostarczone. Pełny zwrot na saldo |
Wartości statusu uzupełnienia
| Pending | Prośba o uzupełnienie przyjęta |
| In progress | Uzupełnienie w trakcie realizacji |
| Completed | Uzupełnienie dostarczone |
| Rejected | Prośba o uzupełnienie nie została przyjęta |
Komunikaty błędów
Błędy przychodzą jako JSON z polem error w odpowiedzi HTTP 200. W kodzie najpierw sprawdzaj pole error.
{
"error": "Not enough funds on balance"
}| Invalid API key | Brak klucza, błędny klucz lub klucz zastąpiony nowym |
| Too many requests | Ponad 300 zapytań na minutę. Spróbuj ponownie za chwilę |
| Incorrect action | Wartości action nie ma na liście powyżej |
| Add funds first | Zamówienie z konta, którego pierwsze doładowanie nie jest jeszcze zaksięgowane |
| Incorrect service ID | Brak usługi do zamówienia o tym ID |
| Incorrect link | Link jest pusty lub nie jest adresem strony |
| Quantity out of range | Ilość poniżej minimum lub powyżej maksimum |
| Incorrect comments | Custom Comments są puste lub przekraczają 10,000 linii albo 500 znaków w linii |
| Not enough funds on balance | Saldo jest niższe niż kwota zamówienia. Doładuj i zamów ponownie |
| Incorrect order ID | To ID zamówienia nie należy do Twojego konta |
| Refill is not available for this service | Usługa nie ma okresu uzupełnienia |
| Order is not finished yet | Uzupełnienie jest dostępne, gdy zamówienie ma status Completed lub Partial |
| Refill period has ended | Okres uzupełnienia liczony od zakończenia zamówienia minął |
| Refill already requested | To zamówienie ma już otwartą prośbę o uzupełnienie |
| Refill already requested, try again later | Od ostatniej prośby nie minęły jeszcze 24 godziny |
| Incorrect refill ID | To ID uzupełnienia nie należy do Twojego konta |
Jak podłączyć API panelu SMM do bota Telegram?
1. Zapisz listę usług
Wywołuj services kilka razy dziennie i zapisuj ID usługi, nazwę, rate, min i max we własnych danych. Cenę dla klientów wylicz, dodając swoją marżę do rate, a przy zamówieniu używaj zapisanego ID usługi bez zmian.
2. Sprawdź ilość i link przed zamówieniem
Sprawdzenie, czy ilość mieści się między min a max i czy link ma format t.me, ogranicza błędy Quantity out of range i Incorrect link. Warto też wcześniej sprawdzić saldo przez balance.
3. Sprawdzaj status partiami
Co kilka minut sprawdzaj trwające zamówienia partiami po 100 z parametrem orders. To spokojnie mieści się w limicie 300 zapytań na minutę na klucz. Gdy zamówienie zmieni status na Completed, Partial lub Canceled, przekaż wynik klientowi.
4. Uzupełnienie tylko dla zakończonych zamówień
Gdy zamówienie usługi z uzupełnieniem ma status Completed lub Partial, możesz wysłać refill. Zapisz ID uzupełnienia z odpowiedzi i śledź postęp przez refill_status.
