API
API žinynas
Išsamus, kiekvieną galinį tašką aprašantis mobileproxy.app REST API žinynas. Kiekvienas kelias, laukas ir pavyzdys čia atspindi gyvą OpenAPI dokumentą, iš kurio sukurtas API. Bazinis URL https://mobileproxy.app/api/v1.
Autentifikavimas ir bazinis URL
Kiekvienas galinis taškas yra po https://mobileproxy.app/api/v1 ir reikalauja bearer žetono. Sukurkite jį valdymo skydelyje skiltyje Kūrėjams → API žetonai arba komanda POST /tokens būdami prisijungę. Slaptas raktas parodomas vieną kartą — išsaugokite jį. Siųskite jį su kiekvienu užklausimu:
Authorization: Bearer mpx_live_…Žetonai, prasidedantys mpx_live_, yra jūsų paskyros žetonai. /device/* galinius taškus iškviečia pati Android programėlė ir jie autentifikuojami atskiru įrenginio žetonu kiekvienam telefonui (mpxdev_…), išduodamu susiejimo metu — jūs jų paprastai niekada nekviečiate.
Klaidos yra JSON su žmogui suprantamu pranešimu ir mašininiu kodu:
{ "error": "No such device.", "code": "not_found" }| Laukas | Tipas | Aprašymas |
|---|---|---|
| 401 | unauthorized | Žetono nėra, jis netinkamas arba atšauktas. |
| 403 | forbidden | Žetonas galioja, bet neturi teisių. |
| 404 | not_found | Šioje paskyroje tokio ištekliaus nėra. |
| 502 | control_plane_unavailable | Šliuzas / valdymo plokštuma trumpam nepasiekiama — pakartokite. |
Paskyra
GET /me — kas aš esu? Grąžina paskyrą ir realaus laiko prenumeratų bei API žetonų skaičius.
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" }Prenumeratos
Prenumerata (id sub_…) yra jums priklausantis pastovus slotas: jo patogus name, nustatymai ir proxy išlieka net keičiantis po juo esančiam telefonui. Jo device yra telefonas, kuris jį šiuo metu maitina (arba null, kai nesusietas), ir jį galima pakeisti — pakeitus išlieka kiekvienas proxy galinis taškas.
Peržiūrėkite prenumeratas — kiekvieną su jos susietu įrenginiu, sujungtu su realia šliuzo būsena (online = proxy tunelis veikia):
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": "…" } } ] }Sukurkite prenumeratą (nesusietą), tada susiekite arba pakeiskite telefoną. POST /subscriptions/{id}/pair grąžina PIN, galiojantį ~3 minutes; įvedus jį Android programėlėje, telefonas susiejamas. Slote, kuris jau turi įrenginį, tai yra pakeitimas (mode: "swap") — senas telefonas atjungiamas, o kiekvienas proxy išlaiko savo host:port ir prisijungimo duomenis:
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": "…" }, … }Gaukite, atnaujinkite arba atšaukite vieną prenumeratą. POST keičia pavadinimą, laisvos formos description (iki 200 simbolių, null jį išvalo), wifi_split nustatymą (įrašomas į eilę susietam telefonui, pritaikomas per kitą jo apklausą ~25 s) arba shared_speed_kbps — kaip įrenginio greitis padalijamas tarp jo proxy. -1 (rekomenduojama) dalija jį automatiškai: valdymo plokštuma matuoja tikrą įrenginio greitį iš gyvo pralaidumo (~3 s subalansavimas), tuo pačiu metu užimti proxy suvienodinami iki lygių jo dalių, o vienas dirbantis proxy gauna visą greitį. Reikšmė > 0 taip pat padalija tą fiksuotą įrenginio bendrą greitį. Kiekvieno proxy speed_limit_kbps reikšmės išsaugomos, bet nevykdomos, kol kuris nors iš jų įjungtas; 0 išjungia dalijimąsi. DELETE panaikina jo įrenginį ir proxy, atlaisvina šliuzo prievadus ir ištrina sloto istoriją — negrįžtama:
# 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 yra vienas vieno protokolo galinis taškas (SOCKS5 arba HTTP) įrenginyje su savo autentifikavimu, šaltinio IP baltuoju sąrašu, greičio limitu ir domenų taisyklėmis. Kiek jų įrenginys gali aptarnauti vienu metu, priklauso nuo plano teisių (10 su Standard, 20 su Pro) — sukurkite po vieną kiekvienam klientui ar įrankiui ir atšaukite bet kurį neliesdami likusių. Sukūrimas viršijus plano ribą grąžina 409 proxy_limit_reached.
Sukurkite proxy — sugeneruoja naują naudotojo vardą / slaptažodį; slaptažodis atviru tekstu grąžinamas vieną kartą, čia. Pasirinkite protocol (socks5 arba http) ir pasirinktinai nurodykite traffic_limit_bytes, kad iškart nustatytumėte griežtą srauto limitą:
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": "…" }endpoint yra IPv4 URI, endpoint_ipv6 tas pats prievadas per IPv6 (v6 literalas laužtiniuose skliaustuose pagal URL sintaksę). Šaltinio IP baltasis sąrašas priima IPv4 ir IPv6 adresus bei CIDR, o paskirties adresai taip pat gali būti IPv6: SOCKS5 CONNECT į IPv6 literalą ar tik AAAA domeną išeina per telefono operatoriaus IPv6, kai SIM jį turi.Redaguokite proxy politiką — autentifikavimo režimą, IP baltąjį sąrašą, greičio limitą ir domenų taisykles, taikomas šliuzui gyvai (protocol yra fiksuotas — vietoj to ištrinkite ir sukurkite iš naujo):
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"] }'Peržiūrėkite proxy — viename įrenginyje arba visą paskyrą:
# 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… }, … ] }Atšaukite proxy — nedelsiant sustabdo tą vieną klausytoją; kiekvienas kitas įrenginio proxy toliau veikia:
curl -X DELETE \
https://mobileproxy.app/api/v1/subscriptions/SUBSCRIPTION_ID/proxies/PROXY_ID \
-H "Authorization: Bearer mpx_live_…"
# → { "deleted": true, "id": "acc_5f734b9270e8" }Kiekvieno proxy naudojimo limitai ir galiojimas
Suteikite bet kuriam proxy naudojimo limitą — idealu, kai perparduodate prieigą ir kiekvienam klientui matuojate duomenų kvotą. Nustatykite ar keiskite bet kada (0 jį išvalo), kuriant, per PATCH arba specialiu galiniu tašku žemiau. Kai bytes_used pasiekia ribą, proxy yra užblokuojamas: išlaiko savo prievadą ir prisijungimo duomenis, bet atmeta kiekvieną užklausą, o over_limit tampa true. Pakelkite limitą virš panaudoto kiekio — arba jį išvalykite — ir proxy iškart atsinaujina, tas pats galinis taškas, jokio perkonfigūravimo. Peržiūrint proxy taip pat pateikiama kiekvieno traffic_limit_bytes, realaus laiko bytes_used ir 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 }Laiku pagrįstas galiojimas — suteikite proxy expires_at momentą (ISO 8601, ateityje) kuriant arba per PATCH; null panaikina laukiantį galiojimą. Tuo momentu proxy atjungiamas — visam laikui, skirtingai nei grįžtamas naudojimo limito blokavimas. Norėdami atnaujinti klientą, sukurkite naują proxy (naujas prievadas ir prisijungimo duomenys). Puikiai tinka dienos / savaitės leidimams parduoti:
# 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 removeVPN konfigūracijos (WireGuard ir OpenVPN)
Paverskite bet kurį proxy viso įrenginio VPN. Kiekviena konfigūracija yra WireGuard (.conf) arba OpenVPN (.ovpn) failas, kuris pratunelina visą įrenginį — telefoną, nešiojamąjį kompiuterį, maršrutizatorių — per to proxy mobiliojo operatoriaus IP. Proxy gali turėti po 1 kiekvienos rūšies — vieną WireGuard ir vieną OpenVPN konfigūraciją. Konfigūracijoms reikia SOCKS5 + naudotojo vardo / slaptažodžio proxy, kad šliuzas galėtų jam autentifikuotis. Konfigūracijos kūrimas reikalauja VPN priedo įrenginio užsakyme (be jo 403 vpn_addon_required) — esamos konfigūracijos lieka sąraše, atsisiunčiamos ir atšaukiamos.
config_text — visas failas su kliento privačiu raktu / sertifikatu. Jo negalima atkurti; išsaugokite jį kurdami. Tą patį failą galite atsisiųsti bet kada iš /file galinio taško, tačiau prarastą failą galima pakeisti tik atšaukus ir sukūrus naują konfigūraciją.# 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_…"Naudokite failą kaip įprasta: wg-quick up ./mpx-9f2c1a0b.conf WireGuard atveju arba importuokite .ovpn į bet kurį OpenVPN klientą. Tada visas įrenginio srautas išeina per telefono operatoriaus IP, o pakeitus to proxy IP pasikeičia ir VPN išėjimas.
IP rotacija
Rotacija prašo operatoriaus naujo IP. Ji yra kiekvienam įrenginiui — kiekvienas įrenginio proxy gauna naują IP — įrašoma į eilę telefonui ir pritaikoma per vieną apklausos ciklą (~25 s).
exit_ip įrenginyje arba iš /ip-history.Pakeisti dabar — įrašyti vienkartinę rotaciją į eilę:
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; …" }Unikalaus IP rotacija — nurodykite unique: true, kad būtų keičiama, kol išėjimo IP bus toks, kurio nematyta per pastarąsias šios prenumeratos IP istorijos window_min minutes (numatytoji 60, maksimali 1440), kartojant iki max_attempts kartų (numatytoji 3, maksimali 5). Kiekvienas bandymas kainuoja visą rotacijos ciklą (~30–90 s); progresui sekti apklauskite GET variantą. Operatoriai gali teisėtai vėl priskirti IP, todėl exhausted yra galimas sąžiningas rezultatas:
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", … }Rotacijos nuorodos — žetonu apsaugotas URL, kuris pakeičia šio įrenginio IP, kai užklausiamas, be autentifikavimo antraštės (paslaptis yra žetonas). Įklijuokite jį į bet kurį įrankį, palaikantį „rotacijos URL“. Peržiūrėkite, kurkite ir atšaukite jas:
# 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" }Suplanuota (laiku pagrįsta) rotacija — nustatykite automatinės rotacijos intervalą minutėmis (0 jį išjungia; maksimali 1440). Ji išsaugoma kaip rotation_interval_min įrenginyje ir siunčia set_rotation_interval komandą, kurią telefonas pritaiko per kitą apklausą, todėl jis pats iš naujo prisijungia tokiu tempu:
# 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" }Skrydžio režimo laukimas — kiek laiko telefonas laiko įjungtą skrydžio režimą kiekvieno IP keitimo metu (airplane_seconds, 3–60, numatytasis 5). Kai kurie operatoriai atlaisvina seną nuomą tik po ilgesnio laikymo; padidinkite tai, jei rotacijos vis grąžina tą patį IP. Taikoma tiek suplanuotoms, tiek valdymo skydelio, tiek API rotacijoms:
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" }Pasirinktinis DNS — sprendikliai, kuriuos telefonas naudoja proxy domenų paieškoms (iki 3 IP literalų; telefonas pritaiko pirmąjį ir iš naujo prisijungia savo tuneliu). Tuščias sąrašas atkuria numatytąjį operatoriaus DNS:
# 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" }Stebėsena
Išėjimo IP istorija — pastarieji telefono praneštieji išėjimo IP, be pasikartojimų (nauja eilutė tik tada, kai IP iš tikrųjų pasikeitė). Patikimas būdas patikrinti, ar rotacija pavyko:
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": "…" }, … ] }Pasirinktiniai užklausos parametrai: from/to (ISO 8601) apriboja langą, limit riboja įrašų skaičių (numatytasis 50, maksimalus 500), o group=day vietoj to grąžina kiekvienos dienos pakeitimų skaičius — nurodykite tz kaip savo UTC poslinkį minutėmis, kad dienos būtų grupuojamos pagal jūsų laiko juostą. Būtent tai maitina valdymo skydelio IP istorijos kalendorių:
# 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 įspėjimai — serveris stebi jūsų parką (~kas 60 s) ir pateikia įspėjimą, kai reikia dėmesio: stale_ip, kai įrenginys prisijungęs, bet jo išėjimo IP nesikeitė ilgiau nei prenumeratos slenkstis (nustatykite stale_ip_alert_minutes ties /rotation; 0 = išjungta, 2–10080), ir duplicate_ip, kai du jūsų įrenginiai praneša tą patį išėjimo IP (operatoriaus NAT gali priskirti vieną adresą dviem SIM — pakeiskite vieną, kad juos atskirtumėte). Įspėjimai išsprendžiami automatiškai, kai sąlyga išnyksta; jie taip pat rodomi valdymo skydelio įspėjimų varpelyje:
# 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 }Įrenginio srautas — baitai, suskaičiuoti šliuze, padalyti pagal proxy. Patogu klientams, kuriems perparduodate, apmokestinti:
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 } ] }Kasdienis srauto suskirstymas — kiekvienos dienos išsiųsti / gauti baitai iš minutės skiriamosios gebos mėginių, laikomų žiniatinklio lygyje, todėl seka išlieka po įrenginių keitimų ir proxy atjungimo. data_since žymi seniausią mėginį — dienos prieš jį neturi duomenų, o tai nėra tas pat kaip nulinis srautas. Nurodykite tz (savo UTC poslinkį minutėmis), kad dienos būtų grupuojamos pagal jūsų laiko juostą; langai iki 92 dienų:
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 } }Kasdienis veikimo laikas — kiekvienos dienos veikimo / neveikimo sekundės, sudarytos iš įrenginio širdies plakimų įrašo (suvienodinta per įrenginių keitimus). Jis matuoja įrenginio širdies plakimo gyvybingumą (~25 s tempas, ~90 s tarpo slenkstis), o ne viso tunelio tinkamumą naudoti. current yra būsena dabar; uptime_pct apima stebėtą kiekvienos dienos dalį:
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 } ] }Visos paskyros naudojimas — suvestinė per kiekvieną įrenginį:
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
Gauti SMS — įeinamosios žinutės šio telefono SIM kortelėje, naujausios viršuje. Naudinga skaitant vienkartinius patvirtinimo kodus (OTP) jums priklausančiuose telefonuose. Tai priklauso nuo programėlės pasirinktinės SMS gavimo teisės; jei ji buvo atmesta įrenginyje, sąrašas lieka tuščias:
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" }, … ] }Serveriai
Šliuzų vietos — vietos, iš kurių aptarnaujami jūsų proxy:
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 žetonai
Peržiūrėkite, kurkite ir atšaukite API žetonus. Naujai sukurto žetono slaptas raktas parodomas vieną kartą — iškart jį išsaugokite; jo niekada nebus galima atgauti. Atšaukimas įsigalioja nedelsiant:
# 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" }Apriboti ir tik skaitymo raktai
Deleguokite prieigą nesidalydami paskyra. Nurodykite subscription_id, kad apribotumėte žetoną viena prenumerata, ir readonly: true, kad apribotumėte jį iki GET užklausų. Apribotas žetonas gali pasiekti tik tos prenumeratos galinius taškus (plius /me); tik skaitymo žetonas atmetamas bet kokiam rašymui. Abu yra apribojimai, uždedami ant jūsų paskyros — apribotas raktas niekada negali pasiekti kitos paskyros duomenų.
# 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)