mobileproxy.app

API

API viide

Täielik, lõpp-punktide kaupa viide mobileproxy.app REST API-le. Iga tee, väli ja näide peegeldab elavat OpenAPI dokumenti, millele API on üles ehitatud. Baas-URL https://mobileproxy.app/api/v1.

Autentimine ja baas-URL

Iga lõpp-punkt asub aadressil https://mobileproxy.app/api/v1 ja nõuab bearer-tokenit. Loo see töölaual jaotises Arendajatele → API tokenid või käsuga POST /tokens, kui oled sisse logitud. Saladust näidatakse ainult üks kord — salvesta see. Saada see iga päringuga kaasa:

Authorization: Bearer mpx_live_…

Tokenid, mis algavad mpx_live_, on sinu konto tokenid. /device/* lõpp-punkte kutsub Android-rakendus ise ja need autendivad end telefonipõhise seadme-tokeniga (mpxdev_…), mis väljastatakse sidumisel — tavaliselt sa neid ise ei kutsu.

Proovi kohe järele
Interaktiivne konsool laseb sul kleepida tokeni ja kutsuda igat lõpp-punkti otse brauserist koos päringukehade ja reaalsete vastustega. Toorspetsifikatsioon on aadressil /api/v1/openapi.json.

Vead on JSON-kujul, inimloetava sõnumi ja masinkoodiga:

{ "error": "No such device.", "code": "not_found" }
VäliTüüpKirjeldus
401unauthorizedToken puudub, on vigane või tühistatud.
403forbiddenToken on kehtiv, kuid pole lubatud.
404not_foundRessurssi sellel kontol ei ole.
502control_plane_unavailableLüüs/juhttasand oli hetkeks kättesaamatu — proovi uuesti.

Konto

GET /me — kes ma olen? Tagastab konto koos tellimuste ja API tokenite reaalajas arvuga.

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

Tellimused

Tellimus (id sub_…) on püsiv pesa, mis kuulub sulle: selle sõbralik name, sätted ja proxyd püsivad ka siis, kui selle all olev telefon vahetub. Selle device on telefon, mis seda parasjagu käitab (või null, kui sidumata), ja on vahetatav — vahetus säilitab iga proxy-lõpp-punkti.

Kuva tellimused — igaüks koos oma seotud seadmega, mis on liidetud reaalajas lüüsi olekuga (online = proxy-tunnel on üleval):

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": "…" } } ] }

Loo tellimus (sidumata), seejärel seo või vaheta telefon. POST /subscriptions/{id}/pair tagastab PIN-i, mis kehtib ~3 minutit; Android-rakenduses sisestatuna seob see telefoni. Pesas, millel on juba seade, on see vahetus (mode: "swap") — vana telefon võetakse kasutuselt maha ja iga proxy säilitab oma host:port ja mandaadid:

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": "…" }, … }

Hangi, uuenda või tühista üks tellimus. POST muudab nime, vabas vormis description (kuni 200 tähemärki, null kustutab selle), wifi_split eelistuse (järjekorda pandud seotud telefonile, rakendatakse selle järgmisel pärimisel ~25 s) või shared_speed_kbps — kuidas seadme kiirus jagatakse selle proxyde vahel. -1 (soovitatav) jagab seda automaatselt: juhttasand mõõdab seadme tegelikku kiirust elava läbilaskevõime järgi (~3 s tasakaalustus), samal ajal hõivatud proxyd koonduvad selle võrdsetele osadele ja üksi töötav proxy saab täiskiiruse. Väärtus > 0 jagab selle asemel sama moodi fikseeritud seadme kogukiiruse. Proxypõhised speed_limit_kbps väärtused säilitatakse, kuid neid ei jõustata, kui kumbki on sees; 0 lülitab jagamise välja. DELETE lammutab selle seadme ja proxyd, vabastab lüüsi pordid ja kustutab pesa ajaloo — pöördumatu:

# 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" }

Proxyd

Proxy on seadmes üks ühe protokolliga lõpp-punkt (SOCKS5 või HTTP), millel on oma autentimine, lähte-IP lubaloend, kiirusepiirang ja domeenireeglid. Mitut seade korraga teenindada saab, sõltub paketi õigustest (Standardis 10, Pros 20) — loo üks kliendi või tööriista kohta ja tühista ükskõik milline neist teisi puudutamata. Loomine üle paketi ülempiiri tagastab 409 proxy_limit_reached.

Seadme proxyd jagavad selle IP-d
Iga seadme proxy väljub sama operaatori IP kaudu ja roteerub koos — teise proxy loomine annab sulle teise mandaadi ja poliitika, mitte teise IP. Teise IP jaoks seo teine telefon.

Loo proxy — loob uue kasutajanime/parooli; parool tagastatakse selgtekstina üks kord, siin. Vali protocol (socks5 või http) ja soovi korral edasta traffic_limit_bytes, et anda sellele algusest peale kindel liikluse ülempiir:

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": "…" }
Iga proxy-port on kahepinuline (IPv4 + IPv6)
Ühendu kummagi perekonna kaudu — endpoint on IPv4 URI, endpoint_ipv6 sama port IPv6 kaudu (v6 literaal on nurksulgudes, vastavalt URL-i süntaksile). Lähte-IP lubaloend aktsepteerib IPv4 ja IPv6 aadresse ning CIDR-e ja ka sihtkohad võivad olla IPv6: SOCKS5 CONNECT IPv6 literaali või ainult AAAA-domeeni suunas väljub telefoni operaatori IPv6 kaudu, kui SIM-il see on.

Muuda proxy poliitikat — autentimisrežiim, IP lubaloend, kiirusepiirang ja domeenireeglid, rakendatakse lüüsi reaalajas (protocol on fikseeritud — selle asemel kustuta ja loo uuesti):

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"] }'

Kuva proxyd — ühel seadmel või kõik proxyd kogu kontol:

# 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… }, … ] }

Tühista proxy — peatab kohe selle ühe kuulaja; kõik teised seadme proxyd töötavad edasi:

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

Proxypõhised kasutuspiirangud ja aegumine

Anna ükskõik millisele proxyle kasutuspiirang — ideaalne, kui müüd juurdepääsu edasi ja mõõdad iga kliendi andmemahtu. Määra või muuda seda igal ajal (0 kustutab selle), loomisel, PATCH kaudu või alloleva spetsiaalse lõpp-punktiga. Kui bytes_used jõuab ülempiirini, on proxy blokeeritud: see säilitab oma pordi ja mandaadid, kuid keeldub igast päringust ja over_limit muutub true-ks. Tõsta piirang üle kasutatud koguse — või kustuta see — ja proxy jätkab kohe, sama lõpp-punkt, ilma ümberseadistamiseta. Proxyde kuvamine näitab ka igaühe traffic_limit_bytes, elava bytes_used ja 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 }

Ajapõhine aegumine — anna proxyle expires_at hetk (ISO 8601, tulevikus) loomisel või PATCH kaudu; null kustutab ootel aegumise. Sel hetkel võetakse proxy kasutuselt maha — jäädavalt, erinevalt pöörduvast kasutuspiirangu blokeeringust. Kliendi uuendamiseks loo uus proxy (uus port ja mandaadid). Suurepärane päeva-/nädalapiletite müügiks:

# 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-i konfiguratsioonid (WireGuard ja OpenVPN)

Muuda ükskõik milline proxy kogu seadme VPN-iks. Iga konfiguratsioon on WireGuard (.conf) või OpenVPN (.ovpn) fail, mis tunneldab terve seadme — telefoni, sülearvuti, ruuteri — läbi selle proxy mobiilioperaatori IP. Proxyl võib olla 1 kummastki liigist — üks WireGuard ja üks OpenVPN konfiguratsioon. Konfiguratsioonid nõuavad SOCKS5 + kasutajanimi/parool proxyt, et lüüs saaks end selle vastu autentida. Konfiguratsiooni loomine nõuab seadme tellimusel VPN-i lisandmoodulit (ilma selleta 403 vpn_addon_required) — olemasolevad konfiguratsioonid jäävad loendisse, allalaaditavaks ja tühistatavaks.

Faili näidatakse ainult üks kord
Loomise vastus sisaldab config_text — täisfaili, mis sisaldab kliendi privaatvõtit / sertifikaati. Seda ei saa uuesti tuletada; salvesta see loomise hetkel. Sa saad täpselt sama faili igal ajal uuesti alla laadida /file lõpp-punktist, kuid kaotatud faili saab asendada ainult vana tühistades ja uue konfiguratsiooni luues.
# 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_…"

Kasuta faili tavapäraselt: wg-quick up ./mpx-9f2c1a0b.conf WireGuardi jaoks või impordi .ovpn ükskõik millisesse OpenVPN kliendisse. Kogu seadme liiklus väljub siis telefoni operaatori IP kaudu ja selle proxy IP roteerimine roteerib ka VPN-i väljundi.

IP rotatsioon

Rotatsioon küsib operaatorilt uut IP-d. See on seadmepõhine — iga seadme proxy saab uue IP — pannakse telefonile järjekorda ja rakendatakse ühe pärimistsükli jooksul (~25 s).

Parimal võimalikul moel mobiilivõrkudes
Kas uuesti valimine annab uue aadressi, otsustab operaator — mõned määravad kiirel uuesti valimisel sama IP tagasi. Kinnita seadme exit_ip või /ip-history järgi.

Roteeri kohe — pane järjekorda ühekordne rotatsioon:

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; …" }

Unikaalse IP rotatsioon — edasta unique: true, et roteerida seni, kuni väljumis-IP on selline, mida pole nähtud selle tellimuse IP ajaloo viimase window_min minuti jooksul (vaikimisi 60, max 1440), proovides kuni max_attempts korda (vaikimisi 3, max 5). Iga katse maksab täisrotatsioonitsükli (~30–90 s); jälgi edenemist GET variandiga. Operaatorid võivad õiguspäraselt IP-d uuesti väljastada, seega exhausted on võimalik aus tulemus:

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", … }

Rotatsioonilingid — tokeniseeritud URL, mis roteerib selle seadme IP-d, kui seda pärida, ilma autentimispäiseta (saladuseks on token). Kleebi see ükskõik millisesse tööriista, mis toetab „rotation URL-i“. Kuva, loo ja tühista neid:

# 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" }

Ajastatud (ajapõhine) rotatsioon — määra automaatse rotatsiooni intervall minutites (0 lülitab välja; max 1440). See püsib seadmes kui rotation_interval_min ja saadab set_rotation_interval käsu, mille telefon rakendab järgmisel pärimisel, nii et see valib uuesti selle sagedusega ise:

# 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" }

Lennukirežiimi ajapiir — kui kaua telefon hoiab iga IP muutmise ajal lennukirežiimi SEES (airplane_seconds, 3–60, vaikimisi 5). Mõned operaatorid vabastavad vana rendi alles pärast pikemat hoidmist; tõsta seda, kui rotatsioonid annavad jätkuvalt sama IP-d. Kehtib võrdselt ajastatud, töölaua ja API rotatsioonidele:

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

Kohandatud DNS — lahendajad, mida telefon kasutab proxy kaudu tehtavateks domeenipäringuteks (kuni 3 IP literaali; telefon rakendab esimese ja valib oma tunneli uuesti). Tühi loend taastab operaatori vaikimisi DNS-i:

# 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" }

Seire

Väljumis-IP ajalugu — telefoni teatatud hiljutised väljumis-IP-d, dubleerimata (uus rida ainult siis, kui IP tegelikult muutus). Usaldusväärne viis kontrollida, kas rotatsioon õnnestus:

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": "…" }, … ] }

Valikulised päringuparameetrid: from/to (ISO 8601) piiravad ajaakent, limit piirab kirjete arvu (vaikimisi 50, max 500) ja group=day tagastab selle asemel päevapõhised muutuste arvud — edasta tz oma UTC nihkena minutites, et päevad rühmitataks sinu ajavööndis. See annab jõu töölaua IP-ajaloo kalendrile:

# 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 hoiatused — server jälgib su seadmeparki (~iga 60 s tagant) ja avab hoiatuse, kui midagi vajab tähelepanu: stale_ip, kui seade on võrgus, kuid selle väljumis-IP pole muutunud kauem kui tellimuse lävi (määra stale_ip_alert_minutes lõpp-punktis /rotation; 0 = väljas, 2–10080), ja duplicate_ip, kui kaks su seadet teatavad sama väljumis-IP-d (operaatori NAT võib anda kahele SIM-ile ühe aadressi — roteeri üht, et neid eristada). Hoiatused lahenevad automaatselt, kui tingimus kaob; need kuvatakse ka töölaua hoiatuskellas:

# 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 }

Seadme liiklus — lüüsis loendatud baidid, jagatud proxyde kaupa. Mugav klientide arveldamiseks, kellele edasi müüd:

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 } ] }

Igapäevane liikluse jaotus — päevapõhised saadetud/vastu võetud baidid, minutitäpsusega proovidest, mida hoitakse veebitasandil, nii et seeria säilib seadmevahetuste ja proxyde kasutuselt mahavõtmise korral. data_since märgib vanimat proovi — sellele eelnevatel päevadel andmeid pole, mis pole sama mis null liiklust. Edasta tz (oma UTC nihe minutites), et päevad rühmitataks sinu ajavööndis; ajaaknad kuni 92 päeva:

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 } }

Igapäevane tööaeg — päevapõhised üleval/maas sekundid, kokku pandud seadme pulsikirjest (ühtne üle seadmevahetuste). See mõõdab seadme pulsi elavust (~25 s sagedus, ~90 s vahe lävi), mitte otspunktist otspunktini tunneli kasutatavust. current on hetkeseisund; uptime_pct katab iga päeva vaadeldud osa:

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 } ] }

Kontoülene kasutus — kokkuvõte kõigi seadmete lõikes:

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

Vastuvõetud SMS — selle telefoni SIM-ile saabuvad sõnumid, uuemad eespool. Kasulik ühekordsete kinnituskoodide (OTP-de) lugemiseks telefonidel, mis kuuluvad sulle. See sõltub rakenduse valikulisest SMS-i vastuvõtmise loast; kui see seadmes tagasi lükati, jääb loend tühjaks:

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" }, … ] }

Serverid

Lüüsi asukohad — asukohad, kust su proxyt teenindatakse:

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 tokenid

Kuva, loo ja tühista API tokeneid. Äsja loodud tokeni saladust näidatakse üks kord — salvesta see kohe; seda ei saa enam kunagi kätte. Tühistamine jõustub kohe:

# 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" }

Piiritletud ja kirjutuskaitstud võtmed

Delegeeri juurdepääsu ilma oma kontot jagamata. Edasta subscription_id, et piiritleda token ühele tellimusele, ja readonly: true, et piirata see GET päringutele. Piiritletud token pääseb ainult selle tellimuse enda lõpp-punktideni (pluss /me); kirjutuskaitstud tokenit ei lubata ühelegi kirjutusele. Mõlemad on piirangud, mis lisatakse su konto peale — piiritletud võti ei pääse kunagi teise konto andmeteni.

# 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)
Nõuanne
See viide püsib API-ga täielikus vastavuses. Brauseris klõpsamiseks — oma tokeni ja reaalajas vastustega — ava interaktiivne konsool või loe toorest OpenAPI dokumenti.