mobileproxy.app

API

API referencia

Kompletná referencia REST API mobileproxy.app, endpoint po endpointe. Každá cesta, pole a príklad tu zodpovedá živému OpenAPI dokumentu, z ktorého je API postavené. Základná URL https://mobileproxy.app/api/v1.

Autentifikácia a základná URL

Každý endpoint sa nachádza pod https://mobileproxy.app/api/v1 a vyžaduje bearer token. Vytvorte ho v dashboarde v časti Pre vývojárov → API tokeny alebo pomocou POST /tokens, keď ste prihlásení. Tajný kľúč sa zobrazí iba raz — uložte si ho. Posielajte ho pri každej požiadavke:

Authorization: Bearer mpx_live_…

Tokeny začínajúce na mpx_live_ sú vaše účtové tokeny. Endpointy /device/* volá samotná aplikácia Android a autentifikujú sa pomocou device tokenu pre konkrétny telefón (mpxdev_…) vydaného pri párovaní — bežne ich sami nikdy nevoláte.

Vyskúšajte naživo
Interaktívna konzola vám umožní vložiť token a volať každý endpoint priamo z prehliadača, s telami požiadaviek a reálnymi odpoveďami. Surová špecifikácia je na /api/v1/openapi.json.

Chyby sú vo formáte JSON so zrozumiteľnou správou a strojovým kódom:

{ "error": "No such device.", "code": "not_found" }
PoleTypPopis
401unauthorizedToken chýba, je poškodený alebo bol zrušený.
403forbiddenToken je platný, ale nie je povolený.
404not_foundZdroj na tomto účte neexistuje.
502control_plane_unavailableBrána/riadiaca vrstva je krátko nedostupná — skúste znova.

Účet

GET /me — kto som? Vráti účet spolu so živými počtami predplatných a API tokenov.

curl https://mobileproxy.app/api/v1/me \
     -H "Authorization: Bearer mpx_live_…"

# → { "id": "u_8c31f0", "email": "[email protected]",
#     "created_at": "2026-06-28T14:02:11.000Z",
#     "subscriptions": 3, "api_tokens": 2,
#     "plan": "beta", "balance": "0.00" }

Predplatné

Predplatné (id sub_…) je trvalý slot, ktorý vlastníte: jeho zrozumiteľný name, nastavenia a proxy pretrvávajú, aj keď sa telefón pod ním zmení. Jeho device je telefón, ktorý ho práve poháňa (alebo null, keď je nespárovaný), a je vymeniteľný — výmena zachová každý proxy endpoint.

Zobrazte predplatné — každé so spárovaným zariadením zlúčeným so živým stavom brány (online = proxy tunel je aktívny):

curl https://mobileproxy.app/api/v1/subscriptions \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscriptions": [ {
#     "id": "sub_760c1fc8ddab", "name": "Paris SFR",
#     "status": "active", "wifi_split": true, "created_at": "…",
#     "device": { "id": "phone_ac862619408e", "model": "Galaxy S8",
#                 "hardware_id": "352091081234567", "hardware_type": "imei",
#                 "status": "online", "exit_ip": "77.136.66.63",
#                 "carrier": "SFR", "last_seen": "…", "paired_at": "…" } } ] }

Vytvorte predplatné (nespárované), potom spárujte alebo vymeňte telefón. POST /subscriptions/{id}/pair vráti PIN platný ~3 minúty; po zadaní v aplikácii Android naviaže telefón. Na slote, ktorý už zariadenie má, ide o výmenu (mode: "swap") — starý telefón sa vyradí a každé proxy si zachová svoj host:port aj prihlasovacie údaje:

curl -X POST https://mobileproxy.app/api/v1/subscriptions \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" -d '{ "name": "Paris SFR" }'
# → { "id": "sub_760c1fc8ddab", "status": "unpaired", "device": null, … }

# Pair (or swap) a phone into it
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/pair \
     -H "Authorization: Bearer mpx_live_…"
# → { "subscription_id": "sub_760c1fc8ddab", "mode": "new",
#     "pairing": { "pin": "483-119-702", "expires_at": "…" }, … }

Získajte, aktualizujte alebo zrušte jedno predplatné. POST mení názov, voľný description (max 200 znakov, null ho vymaže), preferenciu wifi_split (zaradenú do fronty pre spárovaný telefón, uplatnenú pri jeho ďalšom dopytovaní ~25 s) alebo shared_speed_kbps — ako sa rýchlosť zariadenia delí medzi jeho proxy. -1 (odporúčané) ju zdieľa automaticky: riadiaca vrstva meria reálnu rýchlosť zariadenia zo živej priepustnosti (~3 s prevyváženie), proxy zaťažené v rovnakom čase konvergujú k rovnakým podielom a proxy pracujúce osamote dostane plnú rýchlosť. Hodnota > 0 rozdelí tento pevný celok zariadenia rovnakým spôsobom. Hodnoty speed_limit_kbps pre jednotlivé proxy sa uchovávajú, ale pri zapnutej ktorejkoľvek z týchto možností sa nevynucujú; 0 zdieľanie vypne. DELETE zruší jeho zariadenie a proxy, uvoľní porty brány a vymaže históriu slotu — nezvratné:

# Fetch one subscription
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID \
     -H "Authorization: Bearer mpx_live_…"

# Rename / describe / set Wi-Fi split / share the device's speed equally (auto)
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "name": "Paris SFR", "description": "Client X — farm slot 2", "wifi_split": true, "shared_speed_kbps": -1 }'

# Cancel (irreversible)
curl -X DELETE https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID \
     -H "Authorization: Bearer mpx_live_…"
# → { "deleted": true, "id": "sub_760c1fc8ddab" }

Proxy

Proxy je jeden endpoint s jedným protokolom (SOCKS5 alebo HTTP) na zariadení, s vlastnou autentifikáciou, whitelistom zdrojových IP, limitom rýchlosti a pravidlami pre domény. Koľko ich zariadenie dokáže obsluhovať naraz, je nárok podľa plánu (10 na Standard, 20 na Pro) — vytvorte jednu pre každého zákazníka alebo nástroj a ktorúkoľvek z nich zrušte bez dotyku ostatných. Vytvorenie nad rámec limitu plánu vráti 409 proxy_limit_reached.

Proxy na zariadení zdieľajú jeho IP
Každé proxy na zariadení vystupuje cez rovnakú IP operátora a rotujú spoločne — vytvorením druhého proxy získate druhý prihlasovací údaj a politiku, nie druhú IP. Pre ďalšiu IP spárujte ďalší telefón.

Vytvorte proxy — vytvorí čerstvé používateľské meno/heslo; heslo sa v čistej podobe vráti iba raz, tu. Vyberte protocol (socks5 alebo http) a voliteľne odovzdajte traffic_limit_bytes, aby ste mu už od začiatku dali pevný limit prenosu:

curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "protocol": "socks5", "traffic_limit_bytes": 5368709120 }'

# → { "id": "acc_5f734b9270e8", "subscription_id": "sub_760c1fc8ddab",
#     "protocol": "socks5",
#     "host": "173.249.36.102", "host_v6": "2a02:c207:2319:6018::1",
#     "port": 30000,
#     "username": "u04c770", "password": "k7Qp2mXe9wZ4",
#     "endpoint": "socks5h://u04c770:[email protected]:30000",
#     "endpoint_ipv6": "socks5h://u04c770:k7Qp2mXe9wZ4@[2a02:c207:2319:6018::1]:30000",
#     "ip_whitelist": [], "speed_limit_kbps": 0,
#     "domain_mode": "none", "domain_rules": [],
#     "status": "active", "traffic_limit_bytes": 5368709120, "bytes_used": 0,
#     "over_limit": false, "created_at": "…" }
Každý proxy port je dual-stack (IPv4 + IPv6)
Pripojte sa cez ktorúkoľvek rodinu — endpoint je IPv4 URI, endpoint_ipv6 je ten istý port cez IPv6 (v6 literál je v hranatých zátvorkách podľa syntaxe URL). Whitelist zdrojových IP prijíma adresy a CIDR vo formáte IPv4 aj IPv6 a cieľové adresy môžu byť tiež IPv6: SOCKS5 CONNECT na IPv6 literál alebo doménu iba s AAAA vystupuje cez IPv6 operátora telefónu, keď ho SIM má.

Upravte politiku proxy — režim autentifikácie, whitelist IP, limit rýchlosti a pravidlá pre domény, uplatnené naživo na bránu (protocol je pevný — namiesto toho ho vymažte a znova vytvorte):

curl -X PATCH \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID \
  -H "Authorization: Bearer mpx_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "speed_limit_kbps": 2000,
        "domain_mode": "whitelist", "domain_rules": ["api.example.com"] }'

Zobrazte proxy — na jednom zariadení alebo každé proxy naprieč celým účtom:

# One device
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies \
     -H "Authorization: Bearer mpx_live_…"

# Account-wide
curl https://mobileproxy.app/api/v1/proxies \
     -H "Authorization: Bearer mpx_live_…"
# → { "proxies": [ { …Proxy… }, … ] }

Zrušte proxy — okamžite zastaví práve tento listener; každé ostatné proxy na zariadení funguje ďalej:

curl -X DELETE \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID \
  -H "Authorization: Bearer mpx_live_…"
# → { "deleted": true, "id": "acc_5f734b9270e8" }

Limity spotreby a expirácia jednotlivých proxy

Dajte ktorémukoľvek proxy limit spotreby — ideálne, keď predávate prístup ďalej a meriate každému zákazníkovi objem dát. Nastavte alebo zmeňte ho kedykoľvek (0 ho vymaže), pri vytvorení, cez PATCH alebo pomocou vyhradeného endpointu nižšie. Keď bytes_used dosiahne limit, proxy sa zablokuje: zachová si port a prihlasovacie údaje, ale odmieta každú požiadavku a over_limit sa zmení na true. Zvýšte limit nad použité množstvo — alebo ho vymažte — a proxy sa okamžite obnoví, ten istý endpoint, bez opätovnej konfigurácie. Výpis proxy tiež uvádza pre každé jeho traffic_limit_bytes, živé bytes_used a over_limit.

curl -X POST \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID/limit \
  -H "Authorization: Bearer mpx_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "traffic_limit_bytes": 10737418240 }'   # 10 GB — or 0 to remove
# → { "proxy_id": "acc_5f734b9270e8", "subscription_id": "sub_760c1fc8ddab",
#     "traffic_limit_bytes": 10737418240, "over_limit": false }

Časovo obmedzená expirácia — dajte proxy okamih expires_at (ISO 8601, v budúcnosti) pri vytvorení alebo cez PATCH; null zruší čakajúcu expiráciu. V tom okamihu sa proxy vyradí — natrvalo, na rozdiel od zvratného zablokovania pri limite spotreby. Ak chcete zákazníka predĺžiť, vytvorte nové proxy (nový port a prihlasovacie údaje). Ideálne na predaj denných/týždenných prístupov:

# A proxy that stops serving in 7 days
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "protocol": "socks5", "expires_at": "2026-07-13T09:00:00Z" }'

# Extend or clear it later
curl -X PATCH \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID \
  -H "Authorization: Bearer mpx_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "expires_at": "2026-07-20T09:00:00Z" }'   # or null to remove

VPN konfigurácie (WireGuard a OpenVPN)

Premeňte ktorékoľvek proxy na VPN pre celé zariadenie. Každá konfigurácia je súbor WireGuard (.conf) alebo OpenVPN (.ovpn), ktorý tuneluje celé zariadenie — telefón, notebook, router — cez IP mobilného operátora daného proxy. Proxy môže mať 1 od každého druhu — jednu WireGuard a jednu OpenVPN konfiguráciu. Konfigurácie vyžadujú proxy typu SOCKS5 + používateľské meno/heslo, aby sa k nemu brána mohla autentifikovať. Vytvorenie konfigurácie vyžaduje VPN doplnok na objednávke zariadenia (403 vpn_addon_required bez neho) — existujúce konfigurácie zostávajú vo výpise, na stiahnutie a možno ich zrušiť.

Súbor sa zobrazí iba raz
Odpoveď na vytvorenie obsahuje config_text — celý súbor obsahujúci privátny kľúč / certifikát klienta. Nedá sa znovu odvodiť; uložte si ho pri vytvorení. Presne ten istý súbor môžete kedykoľvek znova stiahnuť z endpointu /file, ale stratený súbor možno nahradiť iba zrušením a vytvorením novej konfigurácie.
# Create a WireGuard config on a proxy
curl -X POST \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID/vpn-configs \
  -H "Authorization: Bearer mpx_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "kind": "wireguard", "name": "My laptop" }'
# → { "id": "vpn_9f2c1a0b7e", "kind": "wireguard", "client_ip": "10.77.0.2",
#     "config_text": "[Interface]\nPrivateKey = …\n[Peer]\n…", … }

# ...or OpenVPN
curl -X POST \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID/vpn-configs \
  -H "Authorization: Bearer mpx_live_…" -H "Content-Type: application/json" \
  -d '{ "kind": "openvpn" }'

# List a proxy's configs (metadata + per-kind usage vs the 1-per-kind cap)
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID/vpn-configs \
     -H "Authorization: Bearer mpx_live_…"

# Re-download the file straight to disk
curl -OJ \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID/vpn-configs/vpn_9f2c1a0b7e/file \
  -H "Authorization: Bearer mpx_live_…"

# Revoke (drops the WireGuard peer / OpenVPN cert and kills any live session)
curl -X DELETE \
  https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID/vpn-configs/vpn_9f2c1a0b7e \
  -H "Authorization: Bearer mpx_live_…"

Súbor použite ako obvykle: wg-quick up ./mpx-9f2c1a0b.conf pre WireGuard alebo importujte .ovpn do ktoréhokoľvek OpenVPN klienta. Všetok prenos zariadenia potom vystupuje cez IP operátora telefónu a rotácia IP daného proxy zrotuje aj výstup VPN.

Rotácia IP

Rotácia si od operátora vyžiada čerstvú IP. Je na úrovni zariadenia — každé proxy na zariadení dostane novú IP — zaradí sa do fronty pre telefón a uplatní sa v rámci jedného cyklu dopytovania (~25 s).

Podľa najlepšieho úsilia na mobilných sieťach
Či opätovné vytočenie vyprodukuje novú adresu, je na operátorovi — niektorí pri rýchlom opätovnom vytočení priradia rovnakú IP. Overte to z exit_ip na zariadení alebo z /ip-history.

Zrotovať teraz — zaraďte jednorazovú rotáciu do fronty:

curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/change-ip \
     -H "Authorization: Bearer mpx_live_…"

# → { "status": "rotating", "subscription_id": "sub_760c1fc8ddab",
#     "command_id": "cmd_a41b",
#     "note": "IP rotation on mobile networks is best-effort; …" }

Rotácia na unikátnu IP — odovzdajte unique: true, aby sa rotovalo ďalej, kým exit IP nebude taká, ktorá sa nevyskytla v posledných window_min minútach histórie IP tohto predplatného (predvolene 60, max 1440), s opakovaním až max_attempts-krát (predvolene 3, max 5). Každý pokus stojí celý rotačný cyklus (~30–90 s); priebeh sledujte cez variant GET. Operátori môžu legitímne priradiť IP znova, takže exhausted je možný poctivý výsledok:

curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/change-ip \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "unique": true, "window_min": 60, "max_attempts": 3 }'
# → { "status": "rotating", "request_id": "rr_18d2c4", "command_id": "cmd_a41b",
#     "unique": { "window_min": 60, "max_attempts": 3 }, … }

# Poll for the outcome (active | succeeded | exhausted | superseded | expired)
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/change-ip \
     -H "Authorization: Bearer mpx_live_…"
# → { "request_id": "rr_18d2c4", "status": "succeeded",
#     "attempts_used": 2, "attempts_max": 3, "window_min": 60,
#     "started_ip": "77.136.66.63", "result_ip": "77.136.67.101", … }

Rotačné odkazy — tokenizovaná URL, ktorá pri načítaní zrotuje IP tohto zariadenia, bez autentifikačnej hlavičky (tajomstvom je token). Vložte ju do ktoréhokoľvek nástroja, ktorý podporuje „rotačnú URL“. Zobrazte, vytvárajte a rušte ich:

# List rotation links
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/rotation-links \
     -H "Authorization: Bearer mpx_live_…"
# → { "rotation_links": [ { "token": "rk_9f2c81d4e7",
#       "url": "https://mobileproxy.app/rotate/rk_9f2c81d4e7", "created_at": "…" } ] }

# Create one
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/rotation-links \
     -H "Authorization: Bearer mpx_live_…"
# → { "token": "rk_9f2c81d4e7", "url": "https://mobileproxy.app/rotate/rk_9f2c81d4e7" }

# Revoke one
curl -X DELETE https://mobileproxy.app/api/v1/rotation-links/ROTATION_TOKEN \
     -H "Authorization: Bearer mpx_live_…"
# → { "deleted": true, "token": "rk_9f2c81d4e7" }

Naplánovaná (časovaná) rotácia — nastavte interval automatickej rotácie v minútach (0 ju vypne; max 1440). Pretrváva ako rotation_interval_min na zariadení a odošle príkaz set_rotation_interval, ktorý telefón uplatní pri ďalšom dopytovaní, takže sám opätovne vytáča v tejto kadencii:

# Read the current settings
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/rotation \
     -H "Authorization: Bearer mpx_live_…"
# → { "subscription_id": "sub_760c1fc8ddab", "interval_minutes": 0,
#     "airplane_seconds": 5, "stale_ip_alert_minutes": 0 }

# Rotate automatically every 15 minutes
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/rotation \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "interval_minutes": 15 }'
# → { "status": "set", "subscription_id": "sub_760c1fc8ddab",
#     "interval_minutes": 15, "airplane_seconds": 5,
#     "stale_ip_alert_minutes": 0, "command_id": "cmd_a41b" }

Časový limit režimu Lietadlo — ako dlho telefón drží zapnutý režim Lietadlo počas každej zmeny IP (airplane_seconds, 3–60, predvolene 5). Niektorí operátori uvoľnia starý lease až po dlhšom držaní; zvýšte to, ak rotácie stále vracajú rovnakú IP. Platí rovnako pre naplánované, dashboard aj API rotácie:

curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/rotation \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "airplane_seconds": 20 }'
# → { "status": "set", "subscription_id": "sub_760c1fc8ddab",
#     "interval_minutes": 15, "airplane_seconds": 20,
#     "stale_ip_alert_minutes": 0, "command_id": "cmd_b52c" }

Vlastné DNS — resolvery, ktoré telefón používa na vyhľadávanie proxovaných domén (až 3 IP literály; telefón uplatní prvý a znovu vytočí svoj tunel). Prázdny zoznam obnoví predvolené DNS operátora:

# Read
curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/dns \
     -H "Authorization: Bearer mpx_live_…"
# → { "subscription_id": "sub_760c1fc8ddab", "dns_servers": [] }

# Set (and later send [] to go back to carrier DNS)
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/dns \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "dns_servers": ["1.1.1.1", "8.8.8.8"] }'
# → { "status": "set", "subscription_id": "sub_760c1fc8ddab",
#     "dns_servers": ["1.1.1.1", "8.8.8.8"], "command_id": "cmd_c63d" }

Monitorovanie

História exit IP — nedávne exit IP nahlásené telefónom, deduplikované (nový riadok len vtedy, keď sa IP skutočne zmenila). Spoľahlivý spôsob, ako overiť, že rotácia prebehla:

curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/ip-history \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscription_id": "sub_760c1fc8ddab", "ip_history": [
#     { "ip": "77.136.66.63", "carrier": "SFR", "ts": "…" }, … ] }

Voliteľné parametre dopytu: from/to (ISO 8601) ohraničujú okno, limit obmedzuje počet záznamov (predvolene 50, max 500) a group=day namiesto toho vráti počty zmien za deň — odovzdajte tz ako vaše UTC posunutie v minútach, aby sa dni zoskupovali vo vašej časovej zóne. Toto poháňa kalendár histórie IP v dashboarde:

# Entries for one day
curl "https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/ip-history?from=2026-07-04T22:00:00Z&to=2026-07-05T22:00:00Z&limit=500" \
     -H "Authorization: Bearer mpx_live_…"

# Per-day counts for a month (tz = minutes east of UTC, e.g. 120 for CEST)
curl "https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/ip-history?group=day&tz=120&from=2026-06-30T22:00:00Z&to=2026-07-31T22:00:00Z" \
     -H "Authorization: Bearer mpx_live_…"
# → { "subscription_id": "sub_760c1fc8ddab", "days": [
#     { "day": "2026-07-03", "changes": 9 }, { "day": "2026-07-05", "changes": 2 } ] }

IP upozornenia — server sleduje vašu flotilu (~každých 60 s) a otvorí upozornenie, keď niečo vyžaduje pozornosť: stale_ip, keď je zariadenie online, ale jeho exit IP sa nezmenila dlhšie než prahová hodnota predplatného (nastavte stale_ip_alert_minutes na /rotation; 0 = vypnuté, 2–10080), a duplicate_ip, keď dve vaše zariadenia nahlásia rovnakú exit IP (NAT operátora môže dvom SIM prideliť jednu adresu — jednu zrotujte, aby ste ich oddelili). Upozornenia sa vyriešia automaticky, keď stav pominie; zobrazujú sa aj v zvončeku upozornení v dashboarde:

# Turn on stale-IP alerts: warn after 60 min without an IP change
curl -X POST https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/rotation \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "stale_ip_alert_minutes": 60 }'

# Poll open alerts (feed this to your own monitoring)
curl https://mobileproxy.app/api/v1/alerts \
     -H "Authorization: Bearer mpx_live_…"
# → { "alerts": [
#     { "id": "42", "sub_id": "sub_760c1fc8ddab", "sub_name": "Galaxy S8",
#       "kind": "stale_ip",
#       "message": "IP unchanged for 75 min (alert threshold 60 min) — still 77.136.66.44",
#       "detail": { "ip": "77.136.66.44", "age_min": 75, "threshold_min": 60 },
#       "created_at": "…", "resolved_at": null, "seen_at": null },
#     { "id": "41", "sub_id": "sub_9d8e7f6a5b4c", "sub_name": "Galaxy A32",
#       "kind": "duplicate_ip",
#       "message": "Exit IP 77.136.67.33 is also used by “Galaxy S8” — rotate one device to separate them",
#       "detail": { "ip": "77.136.67.33",
#                   "shared_with": [ { "sub_id": "sub_760c1fc8ddab", "name": "Galaxy S8" } ] },
#       "created_at": "…", "resolved_at": null, "seen_at": null } ],
#     "unseen": 2 }

# Include resolved history; filter to one subscription
curl "https://mobileproxy.app/api/v1/alerts?status=all&subscription=SUBSCRIPTION_ID" \
     -H "Authorization: Bearer mpx_live_…"

# Reset the dashboard's unseen badge (never resolves anything)
curl -X POST https://mobileproxy.app/api/v1/alerts/seen \
     -H "Authorization: Bearer mpx_live_…"
# → { "status": "ok", "marked": 2 }

Prenos pre zariadenie — bajty počítané na bráne, rozdelené podľa proxy. Praktické na fakturáciu zákazníkom, ktorým predávate prístup ďalej:

curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/traffic \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscription_id": "sub_760c1fc8ddab",
#     "bytes_sent": 10485760, "bytes_recv": 262144000, "bytes_total": 272629760,
#     "per_proxy": [ { "proxy_id": "acc_5f734b9270e8",
#                      "bytes_sent": 10485760, "bytes_recv": 262144000 } ] }

Denný rozpis prenosu — odoslané/prijaté bajty za deň zo vzoriek s minútovým rozlíšením uchovávaných na webovej vrstve, takže rad prežije výmeny zariadení aj vyradenie proxy. data_since označuje najstaršiu vzorku — dni pred ňou nemajú dáta, čo nie je to isté ako nulový prenos. Odovzdajte tz (vaše UTC posunutie v minútach), aby sa dni zoskupovali vo vašej časovej zóne; okná až do 92 dní:

curl "https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/traffic/by-day?tz=120" \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscription_id": "sub_760c1fc8ddab", "tz": 120, "data_since": "…",
#     "days": [ { "day": "2026-07-06", "bytes_sent": 10485760,
#                 "bytes_recv": 262144000, "bytes_total": 272629760 } ],
#     "total": { "bytes_sent": 10485760, "bytes_recv": 262144000,
#                "bytes_total": 272629760 } }

Denný uptime — sekundy hore/dole za deň poskladané zo záznamu heartbeat zariadenia (zjednotené naprieč výmenami zariadení). Meria živosť heartbeatu zariadenia (kadencia ~25 s, prahová medzera ~90 s), nie použiteľnosť tunela od začiatku do konca. current je stav práve teraz; uptime_pct pokrýva pozorovanú časť každého dňa:

curl "https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/uptime?tz=120" \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscription_id": "sub_760c1fc8ddab", "tz": 120, "current": "up",
#     "data_since": "…",
#     "days": [ { "day": "2026-07-06", "up_seconds": 31547,
#                 "down_seconds": 253, "uptime_pct": 99.2 } ] }

Spotreba za celý účet — súhrn naprieč každým zariadením:

curl https://mobileproxy.app/api/v1/usage/summary \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscriptions": 3, "proxies": 5,
#     "bytes_sent": 31457280, "bytes_recv": 786432000, "bytes_total": 817889280 }

SMS / OTP

Prijaté SMS — prichádzajúce správy na SIM tohto telefónu, najnovšie ako prvé. Užitočné na čítanie jednorazových overovacích kódov (OTP) na telefónoch, ktoré vlastníte. Spolieha sa na voliteľné povolenie aplikácie na príjem SMS; ak bolo na zariadení zamietnuté, zoznam zostane prázdny:

curl https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/sms \
     -H "Authorization: Bearer mpx_live_…"

# → { "subscription_id": "sub_760c1fc8ddab", "messages": [
#     { "id": "1042", "sender": "+15550101",
#       "body": "Your verification code is 314159",
#       "received_at": "2026-07-05T14:12:00.000Z" }, … ] }

Servery

Lokality brán — lokality, z ktorých sú vaše proxy obsluhované:

curl https://mobileproxy.app/api/v1/servers/locations \
     -H "Authorization: Bearer mpx_live_…"

# → { "locations": [ { "id": "eu-de-1", "host": "173.249.36.102",
#       "region": "EU · Germany (Frankfurt)", "country": "DE",
#       "protocols": ["socks5"], "pool": "mobile" } ] }

API tokeny

Zobrazte, vytvárajte a rušte API tokeny. Tajný kľúč novovytvoreného tokenu sa zobrazí raz — hneď si ho uložte; už nikdy sa nedá získať späť. Zrušenie sa prejaví okamžite:

# List (metadata only — never the secret)
curl https://mobileproxy.app/api/v1/tokens \
     -H "Authorization: Bearer mpx_live_…"
# → { "tokens": [ { "id": "tk_51ad", "name": "storefront",
#       "prefix": "mpx_live_9f2c", "created_at": "…", "last_used_at": "…" } ] }

# Create (secret shown once)
curl -X POST https://mobileproxy.app/api/v1/tokens \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "name": "storefront" }'
# → { "id": "tk_51ad", "name": "storefront",
#     "token": "mpx_live_9f2c81d4e7…", "prefix": "mpx_live_9f2c",
#     "scope_subscription_id": null, "readonly": false,
#     "note": "Store this token now — it will not be shown again." }

# Revoke
curl -X DELETE https://mobileproxy.app/api/v1/tokens/TOKEN_ID \
     -H "Authorization: Bearer mpx_live_…"
# → { "deleted": true, "id": "tk_51ad" }

Obmedzené a iba na čítanie kľúče

Delegujte prístup bez zdieľania svojho účtu. Odovzdajte subscription_id, aby ste token obmedzili na jedno predplatné, a readonly: true, aby ste ho obmedzili na požiadavky GET. Obmedzený token dosiahne iba vlastné endpointy daného predplatného (plus /me); token iba na čítanie je pri akomkoľvek zápise odmietnutý. Oba sú obmedzenia navrstvené na váš účet — obmedzený kľúč nikdy nedosiahne dáta iného účtu.

# A read-only key for ONE subscription — safe to hand a teammate or a monitor
curl -X POST https://mobileproxy.app/api/v1/tokens \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "name": "customer-42",
           "subscription_id": "sub_760c1fc8ddab",
           "readonly": true }'
# → { …, "scope_subscription_id": "sub_760c1fc8ddab", "readonly": true }

# With that key: a GET on its own subscription works…
curl https://mobileproxy.app/api/v1/subscriptions/sub_760c1fc8ddab/traffic \
     -H "Authorization: Bearer mpx_live_scoped…"     # 200

# …but another subscription, the account-wide list, or any write is refused.
curl -X POST https://mobileproxy.app/api/v1/subscriptions/sub_760c1fc8ddab/change-ip \
     -H "Authorization: Bearer mpx_live_scoped…"     # 401 (read-only)
Tip
Táto referencia zostáva v úplnom súlade s API. Ak chcete prehliadač, cez ktorý sa dá preklikať — s vaším vlastným tokenom a živými odpoveďami — otvorte interaktívnu konzolu alebo si prečítajte surový OpenAPI dokument.