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": "you@example.com",
#     "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": "socks5://u04c770:k7Qp2mXe9wZ4@173.249.36.102:30000",
#     "endpoint_ipv6": "socks5://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öötavad proxyd koos väljumis-IP-dega — kontoülene loend sisaldab iga proxy praegust exit_ip-d, seadme reaalajas olekut ja working otsust (seade on võrgus, pole arveldus- ega käsitsi peatamist, liikluspiirang pole ületatud; not_working_reason ütleb, miks mitte). Filtreeri parameetriga ?working=true ja lisa ?unique_ip=true, et jätta üks proxy iga erineva väljumis-IP kohta — kaks SIM-i sama operaatori NAT-i taga märgitakse samuti duplicate_ip kaudu:

# Working proxies only, one per distinct exit IP — a paste-ready pool
curl "https://mobileproxy.app/api/v1/proxies?working=true&unique_ip=true" \
     -H "Authorization: Bearer mpx_live_…"
# → { "proxies": [ {
#       "endpoint": "socks5://user:pass@173.249.36.102:30012",
#       "exit_ip": "77.136.66.44", "device_status": "online",
#       "working": true, "not_working_reason": null,
#       "duplicate_ip": false, … }, … ] }

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 configs (WireGuard)

Turn a SOCKS5 username/password proxy into a full-device WireGuard tunnel. Each proxy can carry one WireGuard config; creation requires the VPN add-on. Legacy OpenVPN rows remain downloadable and revocable, but new OpenVPN configs cannot be provisioned.

Faili näidatakse ainult üks kord
The create response includes the full WireGuard file and its client private key. Store it securely; the same file can be downloaded later from the file endpoint.
# 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…", … }

# List a proxy's configs (metadata + usage vs the one-config 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 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_…"

Use the file with wg-quick up ./mpx-9f2c1a0b.conf or import it into a WireGuard client. Rotating the proxy also rotates the VPN exit.

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

Hulgirotatsioon — roteeri iga seotud seade ühe kutsega, kasutades all: true, või valitud hulk subscription_ids kaudu (üks või teine on nõutav, nii et vigane päring ei saa kunagi kogemata kogu su seadmeparki roteerida). Võtab samad unique valikud nagu tellimusepõhine otspunkt ja iga tellimus raporteerib oma tulemuse — üks peatatud või sidumata pesa ei nurja kunagi kogu partiid. Nõuab iga tellimuse kohta operaatorirolli:

# Rotate every paired device at once (explicit opt-in)…
curl -X POST https://mobileproxy.app/api/v1/proxies/rotate \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "all": true }'

# …or a chosen set, with the unique-IP options
curl -X POST https://mobileproxy.app/api/v1/proxies/rotate \
     -H "Authorization: Bearer mpx_live_…" \
     -H "Content-Type: application/json" \
     -d '{ "subscription_ids": ["sub_760c1fc8ddab"], "unique": true }'
# → { "results": [ { "subscription_id": "sub_760c1fc8ddab",
#       "status": "rotating", "command_id": "…", "request_id": "rr_18d2c4" } ],
#     "rotating": 1, "skipped": 0, … }

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.